【Python】Python-docx使用实例 科技档案封面批量生成

使用背景

根据excel表中的信息,按照word模板格式,每条信息生成一个对应的模板及文件名。

我这里的情况是将科技档案的封面格式按照案卷表的明细批量生成。

(单位的档案软件太鸡肋了,没有这个功能)

代码整篇

'''
工程档案封面制作
原理:通过读取案卷目录生成对应word
python-docx说明文件地址
https://python-docx.readthedocs.io/en/latest/index.html
'''
import openpyxl
from docx import Document
from docx.shared import Pt

def WriteNewDoc(a,b,c,d,e,dir):
    '''
    写入科技档案封面
    '''
    doc= Document('/data/home/2024/99档案/科技档案封面模板.docx')
    para = doc.paragraphs
    #填写档号
    text_run1 = para[0].add_run(a)
    text_run1.underline = True
    text_run1.font.size = Pt(22)
    text_run1.font.name = '黑体'
    #填写立卷单位
    text_run2 = para[-4].add_run(b.center(14))
    text_run2.underline = True
    text_run2.font.size = Pt(22)
    text_run2.font.name = '黑体'
    #填写起止日期
    text_run3 = para[-3].add_run(c.center(27))
    text_run3.underline = True
    text_run3.font.size = Pt(22)
    text_run3.font.name = '黑体'
    #填写保管期限
    text_run4 = para[-2].add_run(d.center(26))
    text_run4.underline = True
    text_run4.font.size = Pt(22)
    text_run4.font.name = '黑体'
    #填写密级
    if e is None:
        text_run5 = para[-1].add_run("                            ")
    else:
        text_run5 = para[-1].add_run(e.center(28))
    text_run5.underline = True
    text_run5.font.size = Pt(22)
    text_run5.font.name = '黑体'
    title = dir+a+'.docx'
    doc.save(title)
    return

wb = openpyxl.load_workbook('/data/home/2024/99档案/2023工程案卷.xlsx')
ws = wb.active
#3和14是我要使用的表格信息的行号区间首尾,一行信息生成一个文件
for row in range(3,14):
    #读取档号
    data1 = ws.cell(row,4).value
    #读取立卷单位
    data2 = ws.cell(row,2).value
    #读取起止日期
    data3 = ws.cell(row,7).value
    #读取保管期限
    data4 = ws.cell(row,8).value
    #读取密级
    data5 = ws.cell(row, 13).value
    WriteNewDoc(data1,data2,data3,data4,data5,'/data/home/2024/99档案/')
wb.close()

要点

  1. python-docx的对象架构,是document里含paragraphs,一个paragraph里含runs,一个run里含font,一个font可以调整字体的那些属性,当然,每一级都有自己的具体属性可以调整,比如段落可以调整居左/居右/居中,run里可以调整加粗、倾斜、下划线之类,font可以调整字体、大小之类。没有用到表格和超链接,没细看这两个对象的说明。
  2. document.save()里有名字的话,与模板不一样就是另存为了。
  3. Pt(22)对应中文二号字体,即22磅。
  4. string.center(num)中num的数值不一致,是因为我没找到中文字符的空格,一个中文字符的宽度等于两个空格,又不知道如何限制文本显示出的总长度,所以笨办法只能数,好在要不全是中文字符,要不全是数字,写好的长度都适用。密级那栏对应信息经常为空,所以加了判断。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python-docx 是一个用于操作 Word 文档的 Python 库。它支持创建、修改和读取 Word 文档,功能强大且易于使用。下面是一个简单的 python-docx 实例教程: 首先,我们需要安装 python-docx 库。可以使用 pip 命令进行安装: ``` pip install python-docx ``` 安装完成后,我们可以开始使用 python-docx 创建一个新的 Word 文档。下面是一个创建新文档并添加段落的示例代码: ```python from docx import Document # 创建一个新的 Word 文档 doc = Document() # 添加段落 doc.add_paragraph('这是第一个段落。') doc.add_paragraph('这是第二个段落。') # 保存文档 doc.save('new_document.docx') ``` 有了这个示例代码,我们就可以创建一个新的 Word 文档并添加段落了。可以根据自己的需求添加更多的段落、表格、图片等。 除了创建文档,python-docx 还支持修改和读取现有的 Word 文档。下面是一个读取 Word 文档并获取段落内容的示例代码: ```python from docx import Document # 打开现有的 Word 文档 doc = Document('existing_document.docx') # 获取所有段落 paragraphs = doc.paragraphs # 输出每个段落的内容 for p in paragraphs: print(p.text) ``` 通过这段示例代码,我们可以打开一个现有的 Word 文档并获取其中的段落内容。 总结来说,python-docx 是一个用于操作 Word 文档的强大库。通过它,我们可以创建、修改和读取 Word 文档,实现自动化处理。上述是一个简单的 python-docx 实例教程,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值