实战!「Excel 合并」
共 1844字,需浏览 4分钟
·
2021-02-10 21:56
你好,我是悦创。今天是咱们来研究 Excel 的拆分和合并。
工作中,如果我们需要同时操作多个 Excel 文件,就是一件非常耗时的事情了。
在工作场景中,需要同时操作多个 Excel 的情况主要有 2 种:批量合并和批量拆分。我来带你看 2 个场景。
「批量合并。」 「问题:」 假设你需要对某些工作内容进行问卷调查,这时你用 Excel 做了调查问卷模版。 「操作:」 我想你会这样做:先把 Excel 通过工作群分发给所有员工,再把群里收集到的反馈附件汇总成一个文件。 我画个流程图你会更清晰:
「批量拆分。」
「问题:」 假设你是公司的财务人员,你需要使用 Excel 对员工工资进行核算,之后再打印出来。但是公司要求员工薪水保密,所以每个员工的工资需要拆分成一个独立的文件,最后还需要打印出来。
无论是合并,还是拆分,我们都面临着一个困境:没有现成的软件可以实现多个 Excel 文件的合并和拆分操作,所以你只好对每一个 Excel 文件都进行“「打开 - 复制粘贴 - 保存」”的工作。
很多人在面对这样的工作需求时,都「忍不住立马去做,却很少停下来分析问题。其实,这三步是很简单的工作,不过也是无意义的重复工作,既浪费了时间,又没有真正产生价值。」
问题
刚刚我们说到批量处理,其实也就是逐一处理多个文件。如果我们想要提升这类工作的效率,就可以先借助 Python 把每一次处理都自动化。之前我已经讲解了如何使用 Python 操作EXcel 了。
试想一下,如果能够使用 Python 替代全部的手工操作,大批量的文件就可以使用 Python 的循环功能自动化完成对每一个文件的自动处理工作了。
对于编程语言来说,文件合并的步骤可以分解为:
1、读取第一个文件,读取第二个文件;
2、将第一个文件的内容追加到第二个文件下方。
「但是这里有个问题,如果按如下写入 Excel 文件有什么问题?」
import xlwt
dst_file = 'Tester.xls'
workbook = xlwt.Workbook(encoding='utf-8')
xlsheet = workbook.add_sheet("统计结果")
# 写入内容,假设取出的内容是value
xlsheet.write(0, 0, value)
# 保存文件
workbook.save(dst_file)
在指出问题前,我先再次解析一下:写入文件的时候,我们使用了一个叫做 write 的函数。它的前两个参数代表的写入位置,分别是指定写入的行和列坐标。
无需多言,这个写入位置非常重要。「如果按照上面的代码方式写入,也就是前两个参数均指定为 0,就会覆盖这个 Excel 文件中的现有内容了。」
「所以,你如果想完成合并操作的话,就要实现对现有 Excel 内容进行追加写入。通常我们会先获取现有的内容一共有多少行、多少列,然后向后移动一个位置,再进行写入。」
如何把 Excel 合并?
我们还是用前面提到的做调查问卷模板的场景,来具体讲一讲怎么实现 Excel 的合并。这里,我们就要用到一个重要功能了:「循环功能。」
循环功能的核心代码是:
from pathlib import Path, PurePath
# 指定要合并excel的路径
src_path = '/Users/aiyuechuang/Desktop/文章1/调查问卷'
# 取得该目录下所有的xls格式文件
p = Path(src_path)
files = [x for x in p.iterdir() if PurePath(x).match('*.xls')]
# 我可以依次获取 src_path 变量指向的路径下所有的文件。
# 避免这个目录里的文件类型过多,使用一个 if 语句用于条件判断,只提取 .xls 结尾的文件。
现在,用 Excel 实现调查问卷自动化的主要功能已经都实现了。接下来,我们看看怎样实现整个工作过程。我把它们的工作流程定义为三个步骤:
1、找到整个工作过程当中重复操作的部分;