python docx创建表格

使用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')

运行结果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值