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程序窗口

相关文章
|
2月前
|
Web App开发 存储 前端开发
Python+Selenium自动化爬取携程动态加载游记
Python+Selenium自动化爬取携程动态加载游记
|
2月前
|
数据采集 人工智能 API
推荐一款Python开源的AI自动化工具:Browser Use
Browser Use 是一款基于 Python 的开源 AI 自动化工具,融合大型语言模型与浏览器自动化技术,支持网页导航、数据抓取、智能决策等操作,适用于测试、爬虫、信息提取等多种场景。
573 4
推荐一款Python开源的AI自动化工具:Browser Use
|
2月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
2月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
2月前
|
数据采集 存储 监控
Python爬虫自动化:定时监控快手热门话题
Python爬虫自动化:定时监控快手热门话题
|
2月前
|
数据采集 监控 算法
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
75 0
|
2月前
|
安全 数据库 数据安全/隐私保护
Python办公自动化实战:手把手教你打造智能邮件发送工具
本文介绍如何使用Python的smtplib和email库构建智能邮件系统,支持图文混排、多附件及多收件人邮件自动发送。通过实战案例与代码详解,帮助读者快速实现办公场景中的邮件自动化需求。
227 0
|
2月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
11月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
215 4
|
6月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
265 14

推荐镜像

更多