peiqlu 发表于 2015-10-30 15:10:13

云表中日历(万年历)的实现方法介绍 云表表格编程结果展示

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

大家好!我是图林(起这个网名,主要是为了和云表粘点关系。她乐图,我图林,哈哈哈哈!)日历(万年历)在各种系统中的使用是很常见的,普通日历系统都有自带的,一般装个控件就能实现日历的提取、填入等操作了。但为了显示更多有关日历的信息,如阴历、节气、节假日和法定休息日等信息,就是我们称的万年历,系统日历中就没有了。本日历应用就是为了实现万年历而做的。效果展示一下:
我刚接触云表表格编程不久,对云表表格编程的应用不是很娴熟,所以此日历只用了云表的小部份强大的技术,只用云表三驾马车中的数据接口和填表公式,云表的业务公式,现在还在摸索阶段。万年历的基本实现,要感谢云表客服Moke提供的日历实现方法,也要感谢EXCELHOME。本案例的原始资料都是来自EXCELHOME网站下载的一个EXCEL公式版的万年历,原版的精彩如下:

数据表:

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

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

①是基本数据项,定义的是年月 ②是交叉表的列标题(定义二行)③是行标题(定义二列)④是数据区⑤三个辅助基本数据项,分别用于存储节日,阴历和法定假日序列。按交叉表的明细数据,如下图所示:
我们可以知道,交叉表中的数据格式,其实是一个行标识和一个列标识交叉的地方,存储一个数据内容。为了确定同个星期值的日期,阴历,节假日和法定休息都能按预定的格式排列,所以我们在设计表单界面时,把交叉表设成列标题行2行——用一行填入星期值的对应数值,一行填入“日期”“阴历”,行标题行设成2列——用一列存储日历的行号,一列存储行号对应的属性“日期”“节日”“上班”“加班”等。由于交叉表的数据区数据类型只能是一种,我定义为文本。辅助基本数据项,是用于存储填表公式取得的各种序列——节日序列,阴历序列和法定休息日序列,增加这些主要是填表公式只支持一个数据接口(已用于日历位置的确定公,Moke的方法)。按照以上的做法,万年历的界面基本就设计完成了。接下来就是设计万年历的公式了。呵呵,这东西要写清楚,有点考验我的文字水平。先写这些吧。
上次我讲到了日历(万年历)的界面设计,补充一点,行列标题和辅助基本数据项在后续工作完成后就可以隐藏就行了。这次我再讲日历公式的设置,如下图:
共设置了6个公式,分别是:清空内容(如上图),填入日期,取各序列,填入农历,填入节日名称和填入法定假日。清空内容很简单,就是把数值区的数据设成空。下面看一下填入日期公式:
共有3个地方注意:1、 数据源用数据接口的全局.序号列表2、 行序号如图:
跟Moke的比较,多了一个首日是否星期日的判断,这样可以避免首日是星期日,出现第一行全空的现象。3、 取当前月各日期的公式:
表中首日日期加数据源的序号取得的。注意公式中的行列匹配情况。

peiqlu 发表于 2015-10-30 15:12:46

续1

本帖最后由 peiqlu 于 2015-11-4 11:24 编辑

提取公序列

填入农历


填入节日


填入法定假日


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



peiqlu 发表于 2015-10-30 15:13:08

本帖最后由 peiqlu 于 2015-11-4 12:51 编辑

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


日历辅助结果数据:






节日列表:



阴历月表:



阴历月表中的一个公式:


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


peiqlu 发表于 2015-10-30 15:13:28

本帖最后由 peiqlu 于 2015-11-4 14:19 编辑

日历辅助表中的公式:

各公式图:







peiqlu 发表于 2015-10-30 15:13:51

日历辅助公式续

本帖最后由 peiqlu 于 2015-11-4 15:27 编辑










































HAHA 发表于 2015-10-30 15:19:29

感谢楼主分享:)

Lato_YOYO 发表于 2015-10-30 15:27:00

这要说不熟悉,也太说不过去了,界面漂亮、公式应用自如,点赞N次:lol

CHINACYN 发表于 2015-10-30 15:28:06

用云表可以通过学习、创造出自己的作品,这也是一大特点和优势。管理是有共性特征的,也是可以借鉴的,掌握了云表便拥有了创新创造的能力,就是如此,如楼上所做的,就是一种再创造。

Moke 发表于 2015-10-30 15:29:48

看来楼主很花心思啊,为了这个日历没少投入时间,非常好,感谢分享

刘雪民 发表于 2018-7-30 12:44:14

有闲暇时间啦!我来也抄袭一下这个日历制作过程
页: [1]
查看完整版本: 云表中日历(万年历)的实现方法介绍 云表表格编程结果展示