使用python docx 生成表格并填充内容
根据列表内容在word 中动态生成表格, 1、根据列表内容创建2行10列的表格 2、将内容相同的单元格合并 3、重新给单元格赋值
from docx import Document
import numpy as np
def create_table(document,arr_list,arr_list_content):
L=np.array(arr_list)
row_num=L.shape[0]
col_num=L.shape[1]
table = document.add_table(rows=row_num,cols=col_num,style='Table Grid')
table = document.tables[-1]
#行单元格合并
for i in range(0,row_num):
value=arr_list[i][0]
for j in range(1,col_num):
if value==arr_list[i][j]:
table.cell(i,j-1).merge(table.cell(i,j))
else:
value=arr_list[i][j]
#列单元格合并
for i in range(0,col_num):
value=arr_list[0][i]
for j in range(1,row_num):
if value==arr_list[j][i]:
table.cell(j-1,i).merge(table.cell(j,i))
else:
value=arr_list[j][i]
#单元格赋值
for i in range(0,row_num):
for j in range(0,col_num):
table.cell(i,j).text=arr_list[i][j]
#单元格赋内容替换
for i in range(0,row_num):
for j in range(0,col_num):
try:
table.cell(i,j).text=arr_list_content[table.cell(i,j).text]
print(table.cell(i,j).text)
print(type(table.cell(i,j).text))
except:
print("合并单元格已赋值")
if __name__=="__main__":
arr_list = [
['0-0', '0-1', '0-2', '0-2', '0-2', '0-2', '0-3', '0-3', '0-3', '0-3'],
['0-0', '1-1', '1-2', '1-3', '1-4', '1-5', '1-6', '1-7', '1-8', '1-9']
]
arr_list_content = {
"0-0": "a",
"0-1": "b",
"0-2": "c",
"0-3": "d",
"1-1": "e",
"1-2": "f",
"1-3": "g",
"1-4": "h",
"1-5": "i",
"1-6": "j",
"1-7": "k",
"1-8": "l",
"1-9": "m"
}
document = Document()
create_table(document,arr_list,arr_list_content)
document.save('table.docx')