实战!「Excel 合并」

AI悦创

共 1844字,需浏览 4分钟

 · 2021-02-10

你好,我是悦创。今天是咱们来研究 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、找到整个工作过程当中重复操作的部分;

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报