失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python实现从word固定表格读取数据写入到excel固定位置

python实现从word固定表格读取数据写入到excel固定位置

时间:2018-08-11 09:22:56

相关推荐

python实现从word固定表格读取数据写入到excel固定位置

#前提:同事的工作是每天做合同下单,每天要从好多个word中粘贴数据到excel太麻烦了,然后让帮忙看看能不能做一个.exe的程序,每次自动填写,需要手敲的地方在自行填写,也会方便很多,于是有了这篇~

需求:(1)要求两份word模板都能写入excel模板中(根据word表格数量来判断);

(2)从word中获取公司名称、地址、邮编等等信息写入excel右侧表格中(根据固定坐标写入);

(3)产品数量每次不同,需要识别每次有多少再写入到excel中(根据此表的行数使用循环);

(4)地址要求字符长度为17,大于17写入下一行(根据固定长度切割字符串);

(5)公司名称和地址的字符串长度显示出来(len()获取字符串长度)。

具体效果如下图:

代码如下:

import docxfrom docx import Document #导入读取word模块import osimport os.pathimport openpyxlfrom openpyxl import *#导入读写excel模块from pythonwin import win32ui #导入打开文件选择框模块import re#打开word文件dlg = win32ui.CreateFileDialog(1) #1表示打开文件对话框dlg.SetOFNInitialDir('C:/Users')#设置打开文件对话框中的初始显示目录dlg.DoModal()WordName = dlg.GetPathName()#获取选择的文件名称WordPath = os.path.join(os.getcwd(),WordName) #获取选择的文件路径doc = Document(WordPath) #读取word文档#读取word中的表格tables = doc.tablesa = len(doc.tables) #获取word中的表格数量#打开excel文件dlg = win32ui.CreateFileDialog(1) #1表示打开文件对话框dlg.SetOFNInitialDir('C:/Users')#设置打开文件对话框中的初始显示目录dlg.DoModal()ExcelName = dlg.GetPathName()#获取选择的文件名称ExcelPath = os.path.join(os.getcwd(),ExcelName)#获取选择的文件路径excel = load_workbook(ExcelPath) #读取exceltable = excel.active #读取excel中的sheet1,.active为第一张表#定义拆分地址的函数def cut_text(text, lenth):textArr = re.findall('.{' + str(lenth) + '}', text)#使用了re模块的findall功能textArr.append(text[(len(textArr) * lenth):])return textArr#判断表格数量来区分word版本if a > 3:t = tables[5]table.cell(2,6).value = t.cell(1,3).text.lstrip()table.cell(4,4).value = t.cell(11,3).text.lstrip()table.cell(6,4).value = t.cell(1,3).text.lstrip()table.cell(10,4).value = t.cell(5,3).text.lstrip()table.cell(13,4).value = t.cell(7,3).text.lstrip()table.cell(14,4).value = t.cell(10,3).text.lstrip()table.cell(15,4).value = t.cell(8,3).text.lstrip()t2 = tables[3]b = len(t2.rows)x = [2,b-2]y = [19,19+(b-4)]#获取和写入产品型号和数量for i,j in zip(x,y):table.cell(j,2).value = t2.cell(i,1).text.lstrip()table.cell(j,4).value = t2.cell(i,4).text.lstrip()#字符串个数table.cell(6,9).value = len(t.cell(1,3).text.lstrip())table.cell(7,9).value = len(t.cell(3,3).text.lstrip())#地址拆分st = cut_text(t.cell(3,3).text,17)c = len(st)m = [0,c-1]n = [7,7+c-1]for l,k in zip(m,n):table.cell(k,4).value = st[l]else:t = tables[1]table.cell(2,6).value = t.cell(1,3).text.lstrip()table.cell(4,4).value = t.cell(4,3).text.lstrip()table.cell(6,4).value = t.cell(0,1).text.lstrip()table.cell(10,4).value = t.cell(4,1).text.lstrip()table.cell(13,4).value = t.cell(0,3).text.lstrip()table.cell(14,4).value = t.cell(3,3).text.lstrip()table.cell(15,4).value = t.cell(1,3).text.lstrip()t2 = tables[0]b = len(t2.rows)x = [1,b-3]y = [19,19+(b-4)]for i,j in zip(x,y):table.cell(j,2).value = t2.cell(i,1).text.lstrip()table.cell(j,4).value = t2.cell(i,5).text.lstrip()# 字符串个数table.cell(6,9).value = len(t.cell(0,1).text.lstrip())table.cell(7,9).value = len(t.cell(2,1).text.lstrip())#地址拆分st = cut_text(t.cell(2,1).text,17)c = len(st)m = [0,c-1]n = [7,7+c-1]for l, k in zip(m,n):table.cell(k,4).value = st[l]#保存成新的文件(默认的保存位置为.py的文件位置)excel.save('new.xlsx')

把.py打包成.exe文件的命令(这样别人可以直接使用.exe文件运行而无需安装python环境)

pyinstaller -w -F word.py -p "D:\software install\Python\project\venv\Lib\site-packages"注:-w是不显示命令窗口-F是.py的名称-p为导入模块的路径,不加会报错为找不到模块XXX执行此命令可以打开cmd窗口使用cd进入到.py文件的上一层目录,也可以在目录shift + 右键,选择在此处打开命令窗口

如果觉得《python实现从word固定表格读取数据写入到excel固定位置》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。