本帖最后由 peiqlu 于 2015-10-31 16:35 编辑

大家好!我是图林(起这个网名,主要是为了和云表粘点关系。她乐图,我图林,哈哈哈哈!)
日历(万年历)在各种系统中的使用是很常见的,普通日历系统都有自带的,一般装个控件就能实现日历的提取、填入等操作了。但为了显示更多有关日历的信息,如阴历、节气、节假日和法定休息日等信息,就是我们称的万年历,系统日历中就没有了。本日历应用就是为了实现万年历而做的。效果展示一下:

万年历效果图

万年历效果图

我刚接触云表表格编程不久,对云表表格编程的应用不是很娴熟,所以此日历只用了云表的小部份强大的技术,只用云表三驾马车中的数据接口和填表公式,云表的业务公式,现在还在摸索阶段。
万年历的基本实现,要感谢云表客服Moke提供的日历实现方法,也要感谢EXCELHOME。本案例的原始资料都是来自EXCELHOME网站下载的一个EXCEL公式版的万年历,原版的精彩如下:
EXCEL版万年历.png

数据表:
EXCEL版万年历data.png

如果没有这表,我还真不知万年历中的日期时间的关系,也就没有这小品了。好了,废话多了,转正题吧。
本万年历采用的技术是云表中的交叉表和日历的查表法(乐乐这样定义的)。技术上没有什么难度,大家一学就会了。
先介绍一下阴历日期的计算原理:先定义一张“阴历月表”,如下图:
阴历月表.png
这可以只有一张表,表格模版就把数据都填好。大家如有需要,Q我,QQ8286231(图林)。
有了这样的阴历月表,其实我们就知道了阴历每月首对应的阳历日期了,再把当前日期与阴历月月首日期的相差天数就是阴历的日期了(是不是豁然开朗,原来阴历是这么来的),我话说得有点绕,多见谅。
此贴先讲到这里,未完待续……


大家好,这次我们介绍一下万年历的界面的设计方法,万年历的界面是采用交叉表设计。交叉表有三部份内容可以填充:行标题,列标题和数据。如下图:
万年历交叉表的设计界面.png
万年历交叉表的设计界面-1.png

是基本数据项,定义的是年月 是交叉表的列标题(定义二行)是行标题(定义二列)是数据区三个辅助基本数据项,分别用于存储节日,阴历和法定假日序列。
按交叉表的明细数据,如下图所示:
交叉表明细数据-4.png
我们可以知道,交叉表中的数据格式,其实是一个行标识和一个列标识交叉的地方,存储一个数据内容。为了确定同个星期值的日期,阴历,节假日和法定休息都能按预定的格式排列,所以我们在设计表单界面时,把交叉表设成列标题行2行——用一行填入星期值的对应数值,一行填入“日期”“阴历”,行标题行设成2列——用一列存储日历的行号,一列存储行号对应的属性“日期”“节日”“上班”“加班”等。由于交叉表的数据区数据类型只能是一种,我定义为文本。
辅助基本数据项,是用于存储填表公式取得的各种序列——节日序列,阴历序列和法定休息日序列,增加这些主要是填表公式只支持一个数据接口(已用于日历位置的确定公,Moke的方法)。
按照以上的做法,万年历的界面基本就设计完成了。
接下来就是设计万年历的公式了。呵呵,这东西要写清楚,有点考验我的文字水平。先写这些吧。

上次我讲到了日历(万年历)的界面设计,补充一点,行列标题和辅助基本数据项在后续工作完成后就可以隐藏就行了。
这次我再讲日历公式的设置,如下图:
交叉表公式1.png
共设置了6个公式,分别是:清空内容(如上图),填入日期,取各序列,填入农历,填入节日名称和填入法定假日。
清空内容很简单,就是把数值区的数据设成空。下面看一下填入日期公式:
交叉表公式2.png
共有3个地方注意:
1、 数据源用数据接口的全局.序号列表
2、 行序号如图:
交叉表公式2-2.png
Moke的比较,多了一个首日是否星期日的判断,这样可以避免首日是星期日,出现第一行全空的现象。
3、 取当前月各日期的公式:
交叉表公式2-3.png
表中首日日期加数据源的序号取得的。
注意公式中的行列匹配情况。
+10
2人收藏
9 条回帖
peiqlu云粉2015-10-30 15:12:46
本帖最后由 peiqlu 于 2015-11-4 11:24 编辑

提取公序列
万年历提取序列-1.png
填入农历
万年历提取农历-4.png
万年历提取农历-5.png
填入节日
万年历提取节日-7.png

填入法定假日
万年历提取法定假日-9.png

界面上的公式基本完成了,下节调日历辅助表,主要核心的阴历,节日,假日算法在辅助表



+10
peiqlu云粉2015-10-30 15:13:08
本帖最后由 peiqlu 于 2015-11-4 12:51 编辑

这一节讲日历辅助表结构及其关基础资料表
日历辅助表结构如下图:
日历辅助表结构-2.png

日历辅助结果数据:
日历辅助结果数据-13.png
日历辅助结果数据-14.png

日历辅助结果数据-15.png


节日列表:
日历辅助表节日列表-5.png


阴历月表:
日历辅助表阴历列表-8.png


阴历月表中的一个公式:
日历辅助表阴历列表-10.png

阴历月表的最后结果数据:
日历辅助表阴历列表-11.png

+10
peiqlu云粉2015-10-30 15:13:28
本帖最后由 peiqlu 于 2015-11-4 14:19 编辑

日历辅助表中的公式: 日历辅助公式-1-18.png

各公式图:
日历辅助公式-1-21.png
日历辅助公式-1-25.png
日历辅助公式-1-22.png
日历辅助公式-1-23.png
日历辅助公式-1-24.png


+10
peiqlu云粉2015-10-30 15:13:51
本帖最后由 peiqlu 于 2015-11-4 15:27 编辑

日历辅助公式-1-26.png


日历辅助公式-1-28.png


日历辅助公式-1-30.png


日历辅助公式-1-32.png


日历辅助公式-1-34.png


日历辅助公式-1-36.png


日历辅助公式-1-38.png


日历辅助公式-1-40.png


日历辅助公式-1-42.png






日历辅助公式-1-44.png





日历辅助公式-1-46.png
日历辅助公式-1-48.png


+10
HAHA云粉2015-10-30 15:19:29
感谢楼主分享
+10
Lato_YOYO云粉2015-10-30 15:27:00
这要说不熟悉,也太说不过去了,界面漂亮、公式应用自如,点赞N次
+10
CHINACYN云侠2015-10-30 15:28:06
用云表可以通过学习、创造出自己的作品,这也是一大特点和优势。管理是有共性特征的,也是可以借鉴的,掌握了云表便拥有了创新创造的能力,就是如此,如楼上所做的,就是一种再创造。
+10
Moke云侠2015-10-30 15:29:48
看来楼主很花心思啊,为了这个日历没少投入时间,非常好,感谢分享
+10
刘雪民云粉2018-7-30 12:44:14
有闲暇时间啦!我来也抄袭一下这个日历制作过程
+10
需要登录后才可进行回复 登录

玩转云表从入门到精通
扫码添加微信立即领取

·云表创始人授课文件
·加入社群与培训学习
·切磋云表开发玩法

商务咨询:0756-3335860
客服咨询