将 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的时候,会得到如下图这样的一个三级列表。

将 Word 表格中数据写入 Excel

既,在循环这个 tables 的时候,得到的二级列表其实就是 Word 中的一个表格的全部数据。再次循环得到的二级列表,得到的列表就是 Word 表格中一行的全部数据。因而,如果我们想得到需要的表格,若该表格中总会出现一个或多个字段,在该文档中是唯一的,我们是不是可以判断这样的字段是否在循环的表格数据中,若在,是否可以单独将该列表写入对应属性 Excel 对应的 sheet 中。后面我相信大家都会处理了。

设计器中大致的设计方案如下图:

将 Word 表格中数据写入 Excel

就 xx 建筑公司中关于 Word 合同的需求,就是要从 Word 文本的众多表格中获取关于(面积,单价)(付款阶段)的数据。实现结果如下图:
将 Word 表格中数据写入 Excel
将 Word 表格中数据写入 Excel

就可以拿到 Word 中需要的表格写入到对应的 sheet 中,后面再通过读取 Excel,便可将数据填入系统。