python、docx、xlsx

读取excel表中内容,将内容写进word模板内。
最后一个方法将多个word放在一起,生成了总的word,易于打印
本例子中在word内有两个表格,第一个为0,第二个为1,使用时可以进行增加
在docx库中还有很多对象,段落,格式,样式等可以阅读手册进行使用

import docx
from openpyxl import load_workbook
import os
from docxcompose.composer import Composer
from docx import Document as Document_compose
import time
#加载模板文件以及查找表的路径
for root, dirs, files in os.walk(os.getcwd()):
    for file in files :
        if file.endswith('.xlsx'):
            xlsxpath=os.path.join(root,file)
            dirpath=os.path.join(root)
        if file.startswith('target'):
            docxpath=os.path.join(root,file)
            dirpath=os.path.join(root)

#填写 .xlsx 文件所在位置
wb = load_workbook(xlsxpath)
ws = wb.active
#填写表格sheet
sheet=wb.get_sheet_names()
#计算生成文件
count=0
#生成word
def word(title,kind,name,group,phone,email,data1,docnum,datesetnum):
    file = docx.Document(docxpath)
    table=file.tables[0]
    table.cell(0, 1).text = title
    table.cell(1, 1).text = kind
    table.cell(2, 1).text = name
    table.cell(2, 3).text = group
    table.cell(3, 1).text = str(phone)
    table.cell(3, 3).text = str(email)
    table.cell(4, 1).text = data1
    table1 = file.tables[1]
    table1.cell(2,1).text=str(docnum)
    table1.cell(2,3).text=str(datesetnum)
    # 添加分页符
    file.add_page_break()
    file.save('{}_{}_{}_{}.docx'.format(str(docnum),name,title,datesetnum))

#从第一个开始一直到结尾
for row in range(2,58):
  count += 1
  title = ws.cell(row=row, column=2).value
  kind = ws.cell(row=row, column=3).value
  name = ws.cell(row=row, column=4).value
  group = ws.cell(row=row, column=5).value
  phone = ws.cell(row=row, column=6).value
  email = ws.cell(row=row, column=7).value
  data = ws.cell(row=row, column=8).value
  datesetnum = ws.cell(row=row, column=9).value
  docnum = ws.cell(row=row, column=1).value
  data1=str(data).split(" ")[0]
  word(title,kind,name,group,phone,email,data1,docnum,datesetnum)

print("共生成 " + str(count) + " 个word文件")
#查找 .docx 文档
result=[]
def search(path=".", name=""):
    for item in os.listdir(path):
        item_path = os.path.join(path, item)
        if os.path.isdir(item_path):
            search(item_path, name)
        elif os.path.isfile(item_path):
            if name in item:
                global result
                result.append(item_path)
                print (item_path)

search(path=dirpath, name=".docx")
#查看文件
print(result)
files = result
def combine_all_docx(filename_master,files_list):
    number_of_sections=len(files_list)
    master = Document_compose(filename_master)
    composer = Composer(master)
    for i in range(1, number_of_sections):
        doc_temp = Document_compose(files_list[i])
        composer.append(doc_temp)
    composer.save("Submission_form_list.docx")#生成总文件
combine_all_docx(result[0],result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值