最近和一个商务助理小伙伴聊天时,小伙伴诉求了一个这样的问题,问我有没有程序化的方式,来节省日常的统计汇总工作。

背景是这样的,我那小伙伴公司有一大群小伙伴们都会负责大量的商业项目,每个项目都会有相应的记录信息,各个小伙伴都会用excel文件记录,我的哪位小伙伴会附带汇总所有小伙伴的记录。平时我那位小伙伴就是把大家的文件收集过来,一个个打开,找到新增的然后复制粘贴到自己的汇总表中,然后再 排序,经常会花费大量的时间来做这个机械的工作,关键还容易出错。

倾听了小伙伴的诉苦,我决定拯救小伙伴的时间了,这样小伙伴节省下来的时间就可以愉快地去玩耍了。
最后选取了写程序来合并,并未选取excel自带的 Microsoft Quary 工具,主要是程序可操作性强,自由度比较大,可以任意操作数据。

解决思路是这样的,就是遍历每个小伙伴的excel文件,然后读取指定sheet,与汇总表中记录作比较,找出新增的记录,然后汇总所有的新增记录和总表的记录,排序后写入汇总表,同时也可以在汇总表中对新增数据做出高清标示。

下面开始写程序吧,这里选取的最近比较流行的 go 语言来实现,与excel的交互选取了 github 上 搜索go excel星标最高的模块 github.com/xuri/excelize/v2

a. 遍历存储所有小伙伴的excel, 假定所有excel文件都存储在 `folder` 的目录下,

b. 合并前首先备份一下之前的汇总文件,(备份很重要,防止数据丢失),

c. 读取所有 excel 文件中对应 sheet 中的记录,

d. 排序数据,可以多列排序,也可以自定义排序,

e. 将汇总后的数据写入excel,

注意事项:

  • 拷贝日期,数字时需要注意格式
  • 需要保留格式信息时,需另外拷贝格式信息
  • 需要保留样式信息时,需另外拷贝样式信息
  • 如需标注新增数据时,可以记录老数据,写文件时将不在老数据中的行使用高亮样式标注
  • 需要个性化配置信息时,提供配置文件来配置相关信息

最后生成了执行文件,及执行结果文件清单:

  • 配置文件 `.env`
  • 可执行文件 `main.exe`

配置文件信息:

sheetName="开标情况表"

rowOffset=2

excludedRowTags="XXXX"

subFolder="./folder/"

aggregatedFileNamePattern="总表"

aggregatedFileBackupDirectory="./folder/backup/"

uniqueByCols="B"

sortByCols="Z"

customOrder=""

用户点击 `main.exe` 文件,即可自动合并目录下的所有excel, 效果图