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天前
|
数据采集 Java 开发工具
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
|
1天前
|
Python
Python办公自动化|自动整理文件,一键完成!
Python办公自动化|自动整理文件,一键完成!
|
2天前
|
算法 Python
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
|
3天前
|
Python
Python知识点——文件和数据格式化
Python知识点——文件和数据格式化
6 0
|
3天前
|
存储 JSON 安全
Python中的文件操作与文件IO操作
【5月更文挑战第14天】在Python中,文件操作是常见任务,包括读取、写入和处理文件内容。`open()`函数是核心,接受文件路径和模式(如'r'、'w'、'a'、'b'和'+')参数。本文详细讨论了文件操作基础,如读写模式,以及文件IO操作,如读取、写入和移动指针。异常处理是关键,使用`try-except`捕获`FileNotFoundError`和`PermissionError`等异常。进阶技巧涉及`with`语句、`readline()`、`os`和`shutil`模块。数据序列化与反序列化方面,介绍了
17 0
|
3天前
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
12 2
|
3天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
3天前
|
数据采集 机器学习/深度学习 算法框架/工具
利用Python实现基于图像识别的自动化数据采集系统
本文介绍了如何利用Python编程语言结合图像识别技术,构建一个自动化的数据采集系统。通过分析图像内容,实现对特定信息的提取和识别,并将其转化为结构化数据,从而实现高效、准确地采集需要的信息。本文将详细讨论系统的设计思路、技术实现以及应用场景。
|
3天前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
18 2
|
3天前
|
JSON 监控 调度
局域网管理软件的自动化任务调度:Python 中的 APScheduler 库的应用
使用 Python 的 APScheduler 库可简化局域网管理中的自动化任务调度。APScheduler 是一个轻量级定时任务调度库,支持多种触发方式如间隔、时间、日期和 Cron 表达式。示例代码展示了如何创建每 10 秒执行一次的定时任务。在局域网管理场景中,可以利用 APScheduler 定期监控设备状态,当设备离线时自动提交数据到网站,提升管理效率。
29 0