云表中日历(万年历)的实现方法介绍 云表表格编程结果展示
2015-10-30 15:10:13
12613
9
本帖最后由 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条回帖