7、批量读取word中表格数据
7.1工具包安装
1
pip install python-docx
1
2
3
4
读取word文件
doc = docx.Document('C:/Users/yyz/Desktop/python办公技巧/data/word信息.docx')
获取文档中所有表格对象的列表
biaoges = doc.tables
7.2 不规范的表格
1
2
cells = biaoges[1]._cells
cells_lis = [[cell.text for cell in cells]]
1
2
3
4
5
6
import pandas as pd
import numpy as np
datai = pd.DataFrame(cells_lis)
datai = datai[[1,3,7,9,14,16,19,21]]
datai.columns = ['姓名','年龄','籍贯','住址','工作单位','电话','是否党员','出生日期']
datai
7.3 规范数据
1
2
3
获取第1个表格行丨
rowi = len(biaoges[0].rows)
rowi
1
2
3
4
5
6
7
8
9
定义空列表
lis1 = []
for循环获取第一个表的数据
for i in range(1,rowi): # 从第2行开始循环
lis1.append([biaoges[0].cell(i,0).text,
biaoges[0].cell(i,1).text,
biaoges[0].cell(i,2).text,
biaoges[0].cell(i,3).text,
biaoges[0].cell(i,4).text])
1
2
3
创建一个dataframe
data1 = pd.DataFrame(lis1,columns=['日期','品类','数量','价格','金额'])
data1
7.4 批量读取
1
2
3
import pandas as pd
import os
os.chdir('C:/Users/yyz/Desktop/python办公技巧/data/word信息/')
1
2
3
4
5
6
7
8
9
10
11
12
lis1=[]
for file in os.listdir('.'):
if file.endswith('.docx'):
doc = docx.Document('./'+file)
biaoges = doc.tables
rowi = len(biaoges[0].rows)
for i in range(1,rowi):
lis1.append([biaoges[0].cell(i,0).text,
biaoges[0].cell(i,1).text,
biaoges[0].cell(i,2).text,
biaoges[0].cell(i,3).text,
biaoges[0].cell(i,4).text])
1
2
3
创建dataframe
data1 = pd.DataFrame(lis1,columns=['日期','品类','数量','价格','金额'])
data1
8 用outlook批量发邮件
8.1 导入工具包
1
2
import win32com.client as win32
import pandas as pd
8.2 读取数据
1
2
3
读取数据
data1 = pd.read_excel('C:/Users/yyz/Desktop/python批量发送邮件.xlsx',sheet_name='发送邮件')
data1.fillna('',inplace=True)
8.3 发送邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
运行outlook
outlook = win32.Dispatch("outlook.Application")
for循环发送文件
for i in range(data1.shape[0]):
mail = outlook.CreateItem(0) # 创建一个邮件对象 win32.constants.olMailItem
mail.To = data1.iloc[i,0] #收件人
mail.CC = data1.iloc[i,1] #抄送人
mail.Subject = data1.iloc[i,2] #邮件主题
mail.HTMLBody = data1.iloc[i,3] # 邮件正文 html格式
# mail.Body = data1.iloc[i,3] # 邮件正文
mail.Attachments.Add(data1.iloc[i,4]) # 附件
mail.Send() #发送
i +=1
print('发送邮件%i份'%i)
制作不易 点个免费的关注支持一下博主吧