Python自动化处理word文件

简介: 自动化

批量生成word文档

安装openpyxl模块:
pip install openpyxl
安装python-docx模块:
pip install python-docx

openpyxl模块可以读写扩展名为.xlsx/.xlsm/.xltx/.xltm的Excel文件。
python-docx模块可以读写扩展名为.docx的Word文档,但不能处理扩展名为.doc的Word文档。
import re

from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT, WD_TABLE_ALIGNMENT
from openpyxl import load_workbook
from docx import Document

def info_update(doc, old_info, new_info):

"""
文档内容替换
:param doc: Word模板文档
:param old_info: 源文本
:param new_info: 新文本
:return:
"""
# 遍历Word文档中的所有段落
for para in doc.paragraphs:
    # 遍历每个段落中的run对象
    for run in para.runs:
        # 替换run对象的文本内容
        # run.text = run.text.replace(r'《'+old_info+'》', new_info)
        run.text = run.text.replace(old_info, new_info)
        run.text = re.sub(r'[《》]', '', run.text)

# 遍历Word文档中的所有表格
for table in doc.tables:
    # 遍历表格中的所有行
    for row in table.rows:
        # 遍历行中的所有单元格
        for cell in row.cells:
            # 替换单元格内容
            cell.text = cell.text.replace('《' + old_info + '》', new_info)

    # 设置表格中的内容居中显示
    # 计算表格的rows和cols的长度
    rows = len(table.rows)
    cols = len(table.columns)
    # 循环将每一行,每一列都设置为居中
    for r in range(rows):
        for c in range(cols):
            table.cell(r, c).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER  # 垂直居中
            table.cell(r, c).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER  # 水平居中

wb = load_workbook('学生成绩表.xlsx') # 打开工作簿
ws = wb.active # 激活工作簿中的工作表

遍历工作表的行,从第2行开始

for row in range(2, ws.max_row + 1):

doc = Document('成绩通知书.docx')  # 创建文档对象
# 遍历工作表的列
for col in range(1, ws.max_column + 1):
    # 读取当前列的第一行,即列标题,单元格的值转换成字符串
    old_info = str(ws.cell(row=1, column=col).value)
    # 读取当前列的数据,单元格的值需要转换成字符串
    new_info = str(ws.cell(row=row, column=col).value)
    # 进行内容替换
    info_update(doc, old_info, new_info)
    student_name = str(ws.cell(row=row, column=1).value)
    doc.save(f'scores\\成绩单--致{student_name}.docx')

将word文档转化为PDF文档

安装pywin32模块:
pip install pywin32
from pathlib import Path
from win32com.client import constants, gencache

创建Path对象

路径要使用绝对路径

src_folder = Path(r'E:\pythonProject\python办公自动化\第5章 自动化处理Word文档\scores')
output_folder = Path(r'E:\pythonProject\python办公自动化\第5章 自动化处理Word文档\PDF')

判断输出目录是否存在

if not output_folder.exists():

# 不存在则创建
output_folder.mkdir(parents=True)

file_list = list(src_folder.glob('*[.docx|.doc]')) # 获得要转换的Word文档的路径列表

word = gencache.EnsureDispatch('Word.Application') # 创建Word程序对象

word = win32com.client.Dispatch('Word.Application')

for word_path in file_list:

# 生成转换后的PDF文件的保存路径
pdf_path = output_folder / word_path.with_suffix('.pdf').name  # with_suffix()返回文件后缀已更改的新路径
# 判断pdf文件路径是否已存在
if pdf_path.exists():
    continue
else:
    # 路径需要是绝对路径,否则会报错
    doc = word.Documents.Open(str(word_path), ReadOnly=1)  # 打开Word文档
    # 设置导出格式为pdf
    doc.ExportAsFixedFormat(str(pdf_path), constants.wdExportFormatPDF)  # 将打开的Word文档另存为PDF文件,保存到给定的路径
    doc.Close()  # 关闭Word文档

word.Quit() # 关闭Word程序窗口

相关文章
|
1月前
|
XML 数据格式 Python
从手动编辑到代码生成:Python 助你高效创建 Word 文档
本文介绍如何用Python实现Word文档自动化生成,结合python-docx、openpyxl和matplotlib库,高效完成报告撰写、数据插入与图表生成,大幅提升办公效率,降低格式错误,实现数据驱动的文档管理。
356 2
|
2月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
957 2
|
3月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
197 0
|
1月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
303 2
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
2月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
100 4
|
2月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
3月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
155 0
|
10月前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
278 8
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
212 1

推荐镜像

更多