excel数据批量导入word并单独保存,如何批量把excel数据导入word

首页 > 实用技巧 > 作者:YD1662024-01-15 21:31:37

在日常工作中,为了统计分析数据,跟进项目进度,都会建立各种表格台帐,常常需要从表格提取关键数据,撰写WORD文件,进行管理预警通知。

如果数量较少,手动提取处理,应该问题不大,但如果多达几十份,甚至上百份,工作量将会很大,且均是重复性的工作,这就是今天的问题:如何实现从表格读取多条数据,自动批量导入WORD表格中,生成通知文件?大家可能使用过WORD的邮件合并功能,可以方便实现从EXCEL表中读取数据,批量打印WORD文档,但它与数据源一一对应,如果满足条件的是多条数据时,就很不方便了。下面介绍利用python,实现从EXCEL表中读取数据,批量导入WORD模板表格中,自动生成文件并保存。

1、导入库

import pandas as pd

from docx import Document

from docx.shared import Pt

from docx.enum.table import WD_ALIGN_VERTICAL

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

如果运行时,提示没有对应库,使用 pip 在命令行中安装这些库。

2、读取数据

df = pd.read_excel('example .xlsx',sheet_name=1)

文件位置根据实际替换,数据1默认第一个表。

3、设置字体样式

font_size = 12 # 字体大小

font_name = '仿宋' # 字体名称

可根据需要自行更改

4、生成单位名称列表

#抽取单位名称存为列表,用于for循环

xmlist=df['单位名称'].values.tolist()

xmlist=list(set(xmlist)) #名称去重

5、载入Word 模板文件

doc = Document('通知.docx')

target_table = doc.tables[0] # 模板中只有一个表格

target_row = 1 # 要插入数据的目标行

6、替换模板中的单位名称

for run in doc.paragraphs[1].runs:

run.text = run.text.replace('xmname',xmname)

将从列表中读取的单位名称,替换模板指定位置文字。

7、选择符合特定条件的数据

a.条件根据需要进行设定,注意同时满足的条件用&连接

condition = (df['列1'] == xmname) & (df['列2'] > 0) & (df['列3'] < 1)

filtered_data = df.loc[condition]

只保留需要的数据列

filtered_data = filtered_data[["列1","列2","列3"]]

b.设置数据是否为空的判断,因为部分单位不满足条件,没有必要生成空的WORD文档,即当为空时,跳出当前循环。

if filtered_data.empty:

continue

8、将数据插入模板表格的指定位置

for index, row in filtered_data.iterrows():

new_row = target_table.add_row().cells

for col_index, column in enumerate(filtered_data.columns):

cell = new_row[col_index]

cell.text = str(row[column])

9、设置字体样式

导入上面的字体,垂直位置居中,因第三列是数字,靠右好看些,所以加了if判断,即前两列靠左,第三列靠右。

cell.paragraphs[0].runs[0].font.size = Pt(font_size)

cell.paragraphs[0].runs[0].font.name = font_name

cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER

if col_index < 2: # 前两列水平靠左

cell.paragraphs[0].alignment =WD_PARAGRAPH_ALIGNMENT.LEFT

else: # 第三列水平靠右

cell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

10、增加新行,方便插入下一条数据

target_row = 1

11、保存生成的文件

doc.save("D:\\通知\\" xmname ".docx")

文件路径注意用双斜杠"\\",文件名称用对应数据。

好了,先向领导报怨工作量太大,然后泡杯茶,坐等下班[捂脸][捂脸]

excel数据批量导入word并单独保存,如何批量把excel数据导入word(1)

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.