最近遇到一个奇葩导出表格的逻辑. 其中有个编码是根据日期+流水号来生成的.但是导出来的数据显示的是日期+流水号,但是值只有流水号.目前需要将这个编码复制出来,然后根据日期进行统计,就出现了无法批量拿到这个日期字段.
- 分析原因:
经过分析发现编码中的日期内容是通过单元格格式设置的.每个单元格设置个展示效果.但是单元格设置只是作为数据展现使用.并不会修改数值.所以导致复制出去的数据只有流水号,不带有日期信息.
- 解决办法:
开始的方法是让用户自行根据前面的编码维护日期.由于数据量比较大,并且每个月会产生新的数据,这种方式效率太低,并且需要耗费大量时间.(淘汰)
做个提取日期的工具表.然后启用WPS表格宏,使用WPS中的JS宏去对数据进行提取.主要是通过cell.NumberFormat属性提取出来单元格格式,然后基于此字符串再截取出来对应的日期即可.具体代码如下:
// 提取单元格格式中的日期信息
function getDate(cell){
var v = cell.NumberFormat
v = v.substring(0,8)
return v
}
使用: 以上宏保存以后.在每个单元格进行调用即可.表中的getDate(选中行)就是自定义的JS宏方法.
总结:
通过WPS的JS宏可以完成大部分的数据处理.并且也不需要本地安装VBA包,因为是通过JS进行调用的.
但是目前对应汇总文件夹中的数据等其他的还需要配合Python,进行汇总数据.后续也会持续推送教程.