【起因前缘】
清明时节,行至湖北潜江,出站时有斜风细雨,在这难得的假期,当是良辰好景,可惜寒更雨歇,最是催人早醒,半梦之间,想起了虎易老师,颇多感怀。
我与虎易老师多年前相识于网络,当时刚学六爻,说来可笑,读了半本书,就敢到处给人断卦,幸遇虎易老师,几多辩论,景行行止,意识到自己学低而识不足,才渐渐学会了闭嘴。因有几年不曾活跃,想来虎易老师未必记得我,但我一直未曾忘记那份感激。
虎易老师博学多识,几十年如一日投入到六爻古籍的注解工作中,免费在网络上公开,热情在群里指导新人,从未故弄玄虚包装自我,担得起易学高人称谓,当代六爻学者,或多或少都应看过虎易老师的注解,只是盗版横行,篡改其名,读者未必知道注解其人。
那时群里常谈死生大事,断人寿辰的卦例最得大家积极,却不想,昔日戏言他人身后事,今朝都到故人眼前来,2023年11月07日,虎易老师与世长辞,一代易星陨落,令人扼腕,悲乎哀哉,我不知虎易老师墓地在潜江何处,只能于黎明抱守晨曦,心香一柱,徒生百感交集罢。
先生技高而不倨傲,为往圣继易学,为后世传经典,影响了包括我在内的许多人。思故起意,今年计划在业余之时,多投入些时间在此一道,便趁这清明假期,制作六爻排盘表,完全免费公开,有需者在公众号【易学实践录】回复六爻排盘表
,即可自行获取。
借用虎易老师的一段话:由于本人学识有限,错误和错漏在所难免,诚望方家及读者指正。能对后学有所助益,则我之愿也。
【背景介绍】
卦例的记录是提高卜算水平的有效方法,也是验证六爻是否伪学的硬性手段,六爻术数经典《增删卜易》根基就是野鹤老人的卦例笔记集。
大学时为提高Excel水平,曾写过一版纯公式实现的六爻排盘表,缺点是各种高级用法嵌套,他人难以看懂;故本次提供数据底表,匹配引用即可。
界面设计参考<天机六爻排盘>APP,一些底表数据从论坛获取,数据处理过程用到了<FFcell、Fuzyy>等插件,感谢这些优秀的参考或工具。
后续计划Python做后端,VUE做前端,在网站/小程序上,实现万年历和六爻排盘工具,当前Excel表作为原型,仅是第一版,持续优化中。
获取途径:公众号<易学实践录>,个人博客:https://blog.ziyong.site (完全免费,完全开源),如有笔误或侵权之处,敬请联系。
【使用方法】
蓝色底色的单元格,必须填写,否则不能生成排盘表
浅蓝色底色的单元格,可填可不填,例如年支、时柱等,只有个别卦例需要用到
绿色底色的单元格,不用填写,表示数据是通过蓝色单元格匹配底表后获取的关联信息
【表格结构】
用[八卦表]生成了[六十四卦表],继而生成了[装卦表],(装卦表+六十甲子+生克冲合+卦爻辞)=所有底表数据,底表+卦例=>>排盘表。
底表中的很多字段,并没有在[排盘表]中呈现,如十二宫含义、卦爻辞等,如有需要可以自行取数,底表数据都已准备好了。
底表不需要修改,故简单隐藏,表格保护密码为 blog.ziyong.site,加密仅防误修改,遵守开源精神,转载或二开注明出处即可。
【排盘表】
页签选择可以在 增删卦例和实战案例之间进行切换,前者用于学习,后者用于积累,私以为,研究六爻必须做好实战卦例的记录。
卦意、方位、卦数等附加信息仅做参考,切勿仅以此断卦,古人有言: 莫泥于卦名之善恶、神煞之吉凶。
相刑、相害、胎神等信息的说法有多种,这里只取了流传较广的版本;因为表格完全开放,可以根据自己需求进行修改。
浅绿色底色的单元格,需要填写,否则不能生成指定的排盘表。
【增删卦例】
【增删卦例】页签,以 增删卜易(古吴版)的简体中文重排电子版为基础,再补充朱辰彬先生的《增删卦例初探220例》的解读。
增删版本众多,解读也众多,选用以上版本主要考虑①发行量和影响力②是否方便代码提取结构化数据,并不代表完全认可校勘和解读的质量。
我读的六爻书多且杂,仅增删解读就看过不下七八家版本至少十几遍,自认还未能辨真融通,所以只能做个搬运工,不敢输出个人观点,此处请见谅。
增删卜易(古吴版)的简体中文重排电子版中,有序号的一共450个卦例。
①一事多占之卦,也增算卦例 ②假令举例之卦,也增算卦例 ③旧存占验之卦,也增算卦例
实际共有451个卦例,原因是有2个卦例没有标序号,有2个卦例重复:
①如丙申日占文书,得地天泰 (书中有但未编号,在例122之后,例123之前,可编为122.5)
②命余同去买之,需绕道两日。余卜一卦,又得大有之大壮 (书中有但未编号,在例152之后,例153之前,可编为152.5)
③例 378、予曾于戌月丙戌日由江右登舟,占一路平安否,得蛊之巽
④例 391、戌月丙戌日由江右登舟占一路平安否,得蛊之巽
PS:增删原著中的例95占妻母病和例160的占求财,全书仅此两例日期和卦象一样
例 95、辰月乙丑日占妻母病,得随之否 例 160、辰月乙丑日占求财,得随之否
《增删卦例初探220例》,是易学作家朱辰彬先生的作品,分为上下两部,上部200个卦例,为其早年间亲笔写就,下部20个卦例,由其弟子解读但也经其审核后发布。
220个卦例,实际只有119个卦例,因为有两个卦例是重复解读了,不过解读内容略有差异,所以均有保留: 初探中的序号为例176和例196,均是解读了增删古吴版中的 (例86、丑月丙戌日占父有信至,已起程我去迎之可能遇否,得蹇之旅)
增删卦例中,一共整理了456行卦例,由下面三部分构成: 增删中的450个有序号的卦例+2个未标序号的卦例(122.5、152.5)+不同版本中有差异的3个卦例(204.5、207.5、283.5)+增删卦例初探中重复解读的1个卦例(86.5)
【日历相关】
用法:通过筛选,实现公历、农历、干支历互相转换,经验证,相较于各种Excel公式推算,查表法最为准确,历法本质上是观测+算法,不存在能够100%正确的计算公式。
使用Python开源库cnLunar生成1901-2100年间的历法数据,删除宜忌等字段减小体积后,导出Excel表如上。
1、不使用寿星通式[Y*D+C]-L(存在较多错误),而使用香港天文台数据(阴阳合历,节气准农历日期才能准); 2、主要内容来自于《钦定协纪辨方书》,支持港式(通书配图)八字月柱算法-默认,通书原文文字农历月份算法; 3、选择依据正月初一切换年柱,原因是历代官方正统历法均如此,如有特殊需要,你可以简单推算后按立春切换年柱; 未选用6tail的lunar-python,原因是很多功能用不到,这也是非常优秀的一个库,尤其是在八字方面,给出多种理论的算法实现。
完整的日历另外成表如下:
import datetime
import cnlunar
import pandas as pd
import os
start_date = datetime.datetime(1901, 1, 1, 0, 0)
end_date = datetime.datetime(2100, 1, 1, 0, 0)
# 支持范围:19010101-2100101
delta = datetime.timedelta(days=1)
# delta = datetime.timedelta(hours=1)
# 无需输出到时辰,因为除了时干支不同外,其他字段依据的最小维度是日,并不会到时。
calendar = []
while start_date <= end_date:
a = cnlunar.Lunar(start_date, godType='8char') # 常规算法,即在正月初一切换年干生肖
# a = cnlunar.Lunar(start_date, godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法。
# 1.中国历朝历代官方历法均以正月初一为一年首日,当天换年干生肖;立春换年,存在于八字等民间占卜预测学中,实际并非正统。
# 2.实际上民间立春换年也有多种理论,难以统一,六爻对年干的关注没有八字强烈,故依据《钦定协纪辨方书》计算,采用常规的初一换年。
# 3.这个问题历来争吵不休,我的建议是搁置争议,通过提供下一节气的提示,使用者简单推算就可以在这两种理论自如切换。
# 4.愿意追究细节,建议参考https://6tail.cn/,该博主发布的lunar-python对于该问题有较深推演,且代码非常完善。
dic = {
'公历日期': a.date,
'农历日期数字': '%s-%s-%s' % (a.lunarYear, a.lunarMonth, a.lunarDay),
'闰年': '闰' if a.isLunarLeapMonth else '',
'农历': '%s %s[%s]年 %s%s' % (a.lunarYearCn, a.year8Char, a.chineseYearZodiac, a.lunarMonthCn, a.lunarDayCn),
'农历日期': '%s%s' % (a.lunarMonthCn, a.lunarDayCn),
'星期': a.weekDayCn,
# 法定节日未增加除夕
'法定节日': (a.get_legalHolidays()),
# '纪念节日': (a.get_otherHolidays()),
'传统节日': (a.get_otherLunarHolidays()),
# '八字干支(带时)': ' '.join([a.year8Char, a.month8Char, a.day8Char, a.twohour8Char]),
# '八字干支': ' '.join([a.year8Char, a.month8Char, a.day8Char]),
'年干支': a.year8Char,
'月干支': a.month8Char,
'日干支': a.day8Char,
# '时干支': a.twohour8Char,
'今日节气': a.todaySolarTerms,
'下一节气': (a.nextSolarTerm, a.nextSolarTermDate, a.nextSolarTermYear),
'今年节气表': a.thisYearSolarTermsDic,
'季节': a.lunarSeason,
'今日时辰': a.twohour8CharList,
'时辰凶吉': a.get_twohourLuckyList(),
'生肖冲煞': a.chineseZodiacClash,
'星座': a.starZodiac,
'星次': a.todayEastZodiac,
'彭祖百忌': a.get_pengTaboo(),
'彭祖百忌精简': a.get_pengTaboo(long=4, delimit=','),
'十二神': a.get_today12DayOfficer(),
'廿八宿': a.get_the28Stars(),
'今日三合': a.zodiacMark3List,
'今日六合': a.zodiacMark6,
'今日五行': a.get_today5Elements(),
'纳音': a.get_nayin(),
'九宫飞星': a.get_the9FlyStar(),
'吉神方位': a.get_luckyGodsDirection(),
'今日胎神': a.get_fetalGod(),
'神煞宜忌': a.angelDemon,
'今日吉神': a.goodGodName,
'今日凶煞': a.badGodName,
'宜忌等第': a.todayLevelName,
'宜': a.goodThing,
'忌': a.badThing,
# '时辰经络': a.meridians
}
calendar.append(dic)
start_date += delta
print(start_date)
df = pd.DataFrame(calendar)
file_name = "万年历输出表.xlsx"
sheet_name = datetime.datetime.now().strftime("%H-%M-%S")
if os.path.exists(file_name):
with pd.ExcelWriter(file_name, mode='a') as writer:
df.to_excel(writer, sheet_name=sheet_name, index=False)
print(f"已在 {file_name} 中添加新的sheet表:{sheet_name}")
else:
df.to_excel(file_name, sheet_name=sheet_name, index=False)
print(f"已在 {file_name} 中创建新的sheet表:{sheet_name}")