复制粘贴也很累,告诉你最灵活的自动填表方式

每周一次、每月一次的报表汇总您真的习惯了吗?突然出现一堆文件需要处理你不会意外吗?在这些大量、繁琐、重复的文件操作前,如果没有点技巧或者工具还真不能淡定。

面对这些操作的你是否在网上搜索过如何自动填表,如何自动汇总呢?那都是天花乱坠的操作方式和工具,有的用数据透视表,有的用power query,有的用他开发的工具……,你仔细挑选了一个貌似可能的方案,准备一步一步地模仿操作流程实现激动人心的自动汇总。结果因为公司表格模版有点“奇葩”,数据透视表什么的根本读不到。正当你准备放弃的时候,发现有人说可以用人工智能、excel的宏编程VBA,基本能解决所有表格自动的需求。于是你在和人工智能对话n次后开始怀疑到底什么是智能,在看了一段vba的代码之后惊呼这是什么文言文?虽然经历了这么多还是请你不要放弃,你如果你恰好看到了这篇文章,我来告诉你还有另外的解决办法也可以很优雅。

那怎么解决?wps JavaScript宏编程,Python和一些库,乃至Qt作为界面都是很好的选择。

首先是wps JavaScript宏,这是wps比较良心的功能,我发现这个功能之后很开心,终于不用再写vba了,具体使用方法可见官方文档。举个例子,下面这个f宏函数实现将当前word文档source路径下的分表的一个数据进行汇总,200个文件的数据一会儿就都获取到了,如果一个一个打开复制粘贴还是要花点时间的。

function f()
{
    var workPath = ActiveDocument.Path
    var thisFile = Application.Documents.Open(workPath+"\word2.docm")
    var dataFile
    var dirPath=workPath+"\source\"
    var dirs = Dir(dirPath+"*.*")
    var i = 2
    while(dirs!=""&&i!=200){
        dataFile =  Application.Documents.Open(dirPath+dirs)
        thisFile.Tables(1).Cell(i,1).Range.Text = dirs
        thisFile.Tables(1).Cell(i,2).Range.Text = dataFile.Tables(1).Cell(1,2).Range.Text
        dataFile.Close()
        dirs = Dir()
        i++
    }
}

Python现在很流行,主要是用它的xlwings等库来实现对excel等文档的操作,比较推荐,也算好学,会python的话还可以搞数据分析、人工智能什么的。使用这个方式可以看看类似《非常容易 : Python+Office会计与财务办公自动化》的书,有个合并财务报表的例子大概是这样的:

from pathlib import Path
import xlwings as xw
with xw.App(visible=False, add_book=False) as app:
    merge_wb = app.books.open('财务报表-模板.xlsx')
    balance_sht = merge_wb.sheets['资产负债表']
    balance_rng1 = balance_sht.range('B5:C37')
    balance_rng2 = balance_sht.range('E5:F37')
    for i in Path('财务报表').glob('*.xlsx'):
        if i.name.startswith('~$'):
            continue
        wb = app.books.open(i)
        ws1 = wb.sheets['资产负债表']
        ws1.range(balance_rng1.address).copy()
        balance_rng1.paste(paste='values', operation='add')
        ws1.range(balance_rng2.address).copy()
        balance_rng2.paste(paste='values', operation='add')
        wb.close()
    merge_wb.save('合并财务报表.xlsx')
    merge_wb.close()

Qt主要是可以用作操作界面,比如python程序本身是没有图形界面的,可以用py-qt库做一个出来,如果直接用c++那也行。Qt的例子比如我之前做过一个用来提高文章编辑和归档效率的小工具:

总之在人工智能操作文档又普及又好用之前(不知何年何月),最有效最灵活的方式还是使用代码。不同于数据透视表等方式对文档格式有较高要求,使用代码能比较精确且几乎无限制地操作到指定的单元格或者段落,以及灵活结合文件、展示数据等等。

(转载请注明原文链接:http://wp.xiaohe.work/2023/09/25/01/,与作者交流,更多软件、效率、有趣内容可访问晓和软件网站xiaohe.work)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Translate »