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

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

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


数据表:


如果没有这表,我还真不知万年历中的日期时间的关系,也就没有这小品了。好了,废话多了,转正题吧。
本万年历采用的技术是云表中的交叉表和日历的查表法(乐乐这样定义的)。技术上没有什么难度,大家一学就会了。
先介绍一下阴历日期的计算原理:先定义一张“阴历月表”,如下图:

这可以只有一张表,表格模版就把数据都填好。大家如有需要,Q 我,QQ 8286231 (图林)。
有了这样的阴历月表,其实我们就知道了阴历每月首对应的阳历日期了,再把当前日期与阴历月月首日期的相差天数就是阴历的日期了(是不是豁然开朗,原来阴历是这么来的),我话说得有点绕,多见谅。
此贴先讲到这里,未完待续……


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


是基本数据项,定义的是年月 是交叉表的列标题(定义二行) 是行标题(定义二列) 是数据区 三个辅助基本数据项,分别用于存储节日,阴历和法定假日序列。
按交叉表的明细数据,如下图所示:

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

上次我讲到了日历(万年历)的界面设计,补充一点,行列标题和辅助基本数据项在后续工作完成后就可以隐藏就行了。
这次我再讲日历公式的设置,如下图:

共设置了6 个公式,分别是:清空内容(如上图),填入日期,取各序列,填入农历,填入节日名称和填入法定假日。
清空内容很简单,就是把数值区的数据设成空。下面看一下填入日期公式:

共有3 个地方注意:
1、 数据源用数据接口的全局.序号列表
2、 行序号如图:

Moke 的比较,多了一个首日是否星期日的判断,这样可以避免首日是星期日,出现第一行全空的现象。
3、 取当前月各日期的公式:

表中首日日期加数据源的序号取得的。
注意公式中的行列匹配情况。
+1 0
9条回帖
peiqlu 云粉 楼主 2015-10-30 15:12:46
本帖最后由 peiqlu 于 2015-11-4 11:24 编辑

提取公序列

填入农历


填入节日


填入法定假日


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



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

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


日历辅助结果数据:






节日列表:



阴历月表:



阴历月表中的一个公式:


阴历月表的最后结果数据:


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

日历辅助表中的公式:

各公式图:







+1 0
peiqlu 云粉 楼主 2015-10-30 15:13:51
5#
本帖最后由 peiqlu 于 2015-11-4 15:27 编辑










































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

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

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

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