按模板批量生成Word文件(上) 您所在的位置:网站首页 创建word模板文件方法 按模板批量生成Word文件(上)

按模板批量生成Word文件(上)

2024-01-08 21:39| 来源: 网络整理| 查看: 265

假设你的公司作为一项大型交流会议的主办方之一,需要邀请其他公司机构的人员出席活动,参会人员有上千名,他们的姓名和联系方式由各公司汇总后储存在不同Excel表格中。

现在要将所有嘉宾信息汇总到一张大表,并为他们制作电子邀请函。 完成这个看起来十分复杂的工作,共需要两步:

1、合并各公司的嘉宾信息表格,得到名单汇总

2、利用表格信息批量生成邀请函 今天就来完成第一步,用Python快速合并表格,抛弃一个个‘复制粘贴’的笨方法吧~

思路讲解 1.导入模块 导入过程中所要用到的模块 2.获取文件名 得到全部表格文件名 3.循环读取表格,合并入新表格 利用第二步中的文件名获取文件,合并表格 4.保存文件 将结果保存到新的Excel中

先献上所有代码:

import os import pandas as pd file_path='课程/名单表格/' file_names=os.listdir(file_path) file_merge=pd.DataFrame() for name in file_names: df=pd.read_excel(file_path+name) file_merge=file_merge.append(df) file_merge.to_excel('./tmp/file_merge.xlsx',index=None)

上面的9行代码就能实现合并表格的功能。当表格数量很多,或经常需要做这类重复操作时,都可以拿出今天这节课学习的代码来应对!记得收藏好课程和代码哦。话不多说,现在就进入代码解读时间。

1.导入模块

通常开始操作前,都要导入后续需要的相关模块。本节课我们依然要用到os和pandas模块。

一起回忆一下它们的作用:os中包含了很多文件目录处理的操作内容,pandas是具有数据分析功能模块:

import os import pandas as pd

细心的你可能发现了第二行代码和我们之前导入pandas模块时写法有些不同,前两节课中我们的写法都是import pandas。两种方式有什么区别?

import … as …

当我们写作import pandas as pd时,相当于给pandas起了一个简单的别名pd,目的是更加简单,方便后续使用。

例如调用pandas的DataFrame方法,以往的写法是pandas.DataFrame(),现在就可以直接写成pd.DaraFrame()

以后当你看到import A as B时候,就代表给模块A起了一个别名B,其功能和方法都没有变化,像以前一样正常使用就可以。

2.获取文件名

收集到各公司参会人员名单表格都汇总在了课程/名单表格目录中,我们先提取出所有文档的名称,为的是在下一步中,利用文件名打开相关文件,进而对表格做合并。

获取文件名称这个功能对你来说应该并不陌生,前两关中都有涉及,还记得如何实现吗?

os模块中的listdir()方法可以解决这个问题,括号中的参数需要写入路径。

定义一个file_path变量,存放路径:

file_path='课程/名单表格/'

使用os.listdir()方法获取各表格名称,并将结果存放在file_names变量中:

file_names=os.listdir(file_path) 3.循环读取表格,合并入新表格

下面来到了今天的重头戏,这步操作即将完成表格合并的任务,敲黑板划重点,认真听讲了哦。

嘉宾信息都存放在表格中,如何利用Python操作表格文件?马上为你介绍一个新朋友。

DataFrame

DataFrame是一种表格型数据结构,之所以叫表格型数据结构,是因为DataFrame数据形式和Excel的数据存储形式很接近。有行、列可以进行设置。

DataFrame是Pandas库中的使用的一种数据结构,它应用起来也很方便,读Excel只需要一行代码。

读取到的Excel文件以DataFrame结构存储,可以对它指定行列进行添加,删除,修改以及查询分组等各种操作。最终还能将修改结果写入新的文件中。

了解了DataFrame,马上来看看应该如何应用。现在我们需要读取各公司的嘉宾名单表格,将所有内容合并到一个大表格中。

实现的逻辑是:

创建一个空表格依次打开文件夹中的每个表格将内容复制到空白表中

就能得到最终合并结果。

用下面这行代码创建一个空DataFrame,命名为file_merge:

file_merge=pd.DataFrame()

然后依次读取所有文档,再将内容写入DataFrame就大功告成了~

读取表格内容需要用到pandas中的read_excel方法,在导入模块时我们使用了import pandas as pd,于是调用方法时可以简写为pd.read_excel(),括号中的参数是想要读取的文件路径。

所有表格都放在了课程/名单表格/中,这个路径我们已经在第二步获取文件名时已经将它存放在了变量path_name中。只需要在后面加上表格的名称,作为参数传入就可以。

例如要读取A公司嘉宾名单表格文件,就可以在括号中写入课程/名单表格/A公司.xlsx

可以看到它是由路径+表格文件名拼接形成的。

因此读取A公司名单可以这样实现:

pd.read_excel('课程/名单表格/A公司.xlsx')

现在一起来思考:如何快速读取所有表格文件呢?

我们要对文件夹中所有表格文件都执行读取,添加入新表的相同操作。像这样把一件事情重复执行多次,当然要用到循环啦。

我们可以利用循环逐个取出表格文档名,把path_name和每个文档名拼接在一起得到文件路径。

字符串拼接

在Python中加号不仅可以实现数学上的加法操作,还有另一个重要功能:字符串拼接。举个栗子~

代码练习 a='好好学习' b='天天向上' c=a+b print(c)

上面几行代码就把字符串a和b拼接在了一起。现在来看下面这段代码:

for name in file_names: df=pd.read_excel(file_path+name)

第二步获取到的所有表格名称都存放在file_names中,for循环依次取出文件名,用加号+拼出文件路径,再用read_excel方法就可以读取表格的内容啦~

这样在每次循环中,都能读取一个公司的名单表格,将每次打开的内容拼接起来就能得到想要的汇总名单。

为了实现拼接操作,我们要用到append()方法,把读取出的内容存放到DataFrame中:

file_merge=file_merge.append(df)

一起回顾完成这一步使用的代码:

file_merge=pd.DataFrame() for name in file_names: df=pd.read_excel(file_path+name) file_merge=file_merge.append(df) 4.保存文件

最后一步,保存文件使用to_excel()方法,括号内参数传入文件的保存路径,设置不显示索引。

file_merge.to_excel('./tmp/file_merge.xls',index=None)

表格也保存在tmp目录下,命名为file_merge。

这样我们就完成了今天代码的所有分析啦~

现在再来总体浏览一遍今天的代码,你是不是已经能够理解了呢?

import os import pandas as pd file_path='课程/名单表格/' file_names=os.listdir(file_path) file_merge=pd.DataFrame() for name in file_names: df=pd.read_excel(file_path+name) file_merge=file_merge.append(df) file_merge.to_excel('./tmp/file_merge.xlsx',index=None) 知识总结

本节课我们完成了批量合并Excel的任务,把所有嘉宾信息统计在了一张表格中。还学习了下面三个知识点:

1、import…as…

当你看到import A as B时候,就代表给模块A起了一个别名B,其功能和方法都没有变化,目的是简洁方便使用。

2、DataFrame

DataFrame是Pandas库中的使用的一种表格型数据结构,它应用起来很方便,可以读写Excel。

3、字符串拼接

Python中加号可以实现字符串的拼接功能。

师承Python学习联盟

如对python语言有兴趣可以微信关注Python学习联盟

希望本次分享能对您有所帮助!!! 最终版权归Python学习联盟所有。

一个热爱Python的学习崽


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有