将 Word 表格中数据写入 Excel
如题,代码其实在之前的线上培训已经讲过。现分享该代码,并在基础上再次处理
具体代码如下:
from docx import Document # 读Word的库
from openpyxl import Workbook # 写Excel的库
“““file_path : Word文本的路径
save_path : 保存Excel的路径
”””
def word_table_excel(file_path,save_path):
document = Document(file_path)
count = 0
tables = []
wb = Workbook()
ws = wb.active
total = len(document.tables) # total 得到Word找那个有几个表格
print("总共", total, "个表格等待处理...")
for index in range(0, total):
table = []
for row in document.tables[index].rows:
line = []
for grid in row.cells:
line.append(grid.text)
table.append(line)
ws.append(line)
count = count + 1
print("第", count, "个表格正在处理...剩余", total - count + 1, "个表格", "\n")
tables.append(table)
wb.save(save_path)
print(tables)
print("表格处理完成...")
!!!然而我们如果遇到的 Word 是不规则的,Word 中的表格个数不一样,且表格数据属性的位置不一样的时候,我们就算将 Word 中的表格写入 Excel,对后面的数据获取也是无法操作的。
因而,下面我在此基础上再做处理。
处理思路:
将Word中的表格,按照每一个表格,依次读取。可以按照每个表格中会出现固定的字段,将Word文件中对应的属性写入Excel的对应sheet里面。
代码,还是上面的代码。我们在打印最终这个 tables的时候,会得到如下图这样的一个三级列表。
既,在循环这个 tables 的时候,得到的二级列表其实就是 Word 中的一个表格的全部数据。再次循环得到的二级列表,得到的列表就是 Word 表格中一行的全部数据。因而,如果我们想得到需要的表格,若该表格中总会出现一个或多个字段,在该文档中是唯一的,我们是不是可以判断这样的字段是否在循环的表格数据中,若在,是否可以单独将该列表写入对应属性 Excel 对应的 sheet 中。后面我相信大家都会处理了。
设计器中大致的设计方案如下图:
就 xx 建筑公司中关于 Word 合同的需求,就是要从 Word 文本的众多表格中获取关于(面积,单价)(付款阶段)的数据。实现结果如下图:
就可以拿到 Word 中需要的表格写入到对应的 sheet 中,后面再通过读取 Excel,便可将数据填入系统。
学到了,学到了