常用word、pdf的替换、合并、剪切操作

  1. 批量生成word文档,保留文档格式。
from docx import Document
import os
import glob
import pandas as pd

#读取excel表,sheet_name是sheet名
tab1 = pd.read_excel(r"D:\\桌面文件\\test.xlsx", sheet_name="客户清单", dtype=str)

#查看列名
col=tab1.columns.tolist()

names=tab1['姓名'].tolist()
#取序号列,用于文件命明和循环次数
numb=tab1['序号'].tolist()

#循环替换文本 len(numb)
for i in range(0,len(numb)):
    name=tab1['姓名'].loc[i]   #提取姓名    .iloc[:,1:3]
    #print(name)
    th1=tab1['替换列'].loc[i]  #提取需要替换上去的文本内容
    je=tab1['金额'].loc[i]  #提取需要替换的金额
    # 示例1的文档中有3个地方需要替换,替换一为客户信息占位符,替换二为姓名占位符,替换三为金额替换符。
    # 示例2的文档中有1个地方需要替换,替换二为姓名占位符
    document = Document("D:\\桌面文件\\示例1.docx")
    document_sh = Document("D:\\桌面文件\\示例2.docx")
    
    for paragraph in document.paragraphs:
        for run in paragraph.runs:
            if '替换一' in run.text:  # 替换为你要查找的文本
                run.text = run.text.replace('替换一', th1)  # 替换为你要替换后的文本
            if '替换二' in run.text:  # 替换为你要查找的文本
                run.text = run.text.replace('替换二', name)  # 替换为你要替换后的文本
            if '替换三' in run.text:  # 替换为你要查找的文本
                run.text = run.text.replace('替换三', je)  # 替换为你要替换后的文本

    for paragraph_sh in document_sh.paragraphs:
        for run_sh in paragraph_sh.runs:
            if '替换二' in run_sh.text:  # 替换为你要查找的文本
                run_sh.text = run_sh.text.replace('替换二', name)  # 替换为你要替换后的文本
          
    #保存文件名
    filename=numb[i]+"、示例1:"+name+".docx"
    filename_sh=numb[i]+"、示例2:"+name+".docx"
    
    #print(filename)
    # 拼接保存地址
    new_file_path =os.path.join('D:\\示例1', filename) 
    new_file_path_sh =os.path.join('D:\\示例2', filename_sh) 
    #保存
    document.save(new_file_path )  
    document_sh.save(new_file_path_sh )  

  1. 批量合并word文档,保留文档格式,合并从新的一页开始。
import os
from docx import Document
from docxcompose.composer import Composer

original_docx_path='D:/商务智能/实验报告/'
new_docx_path='D:/商务智能/商务智能实验报告合并件.docx'

#提取文件夹下所有文件名
all_word=os.listdir(original_docx_path)
#拼接全部文件的list,如果需要可以对all_word进行排序,使用sorted()或sort()函数
all_file_path=[]
for file_name in all_word:
    all_file_path.append(original_docx_path+file_name)
#打开第一份文件
master=Document(all_file_path[0])
#将第一份文件作为模板
middle_new_docx=Composer(master)
num=0
#遍历合并所有word文件
for word in all_file_path:
    word_document=Document(word)
    #添加分页符函数add_page_break
    word_document.add_page_break()
    if num!=0:
        middle_new_docx.append(word_document)
    num=num+1
#保存
middle_new_docx.save(new_docx_path)

声明第2段代码来源:https://fkxxgis.blog.csdn.net/article/details/117718274?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-117718274-blog-125653568.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-117718274-blog-125653568.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=26

  1. word文档转pdf文档
import comtypes.client

def doc_to_pdf(doc_path, pdf_path):
    # 创建Word应用程序对象
    word = comtypes.client.CreateObject('Word.Application')
    word.Visible = 0  # 不显示Word界面

    # 打开Word文档
    doc = word.Documents.Open(doc_path)

    # 将文档保存为PDF格式
    doc.SaveAs(pdf_path, FileFormat=17)  # 17代表PDF格式

    # 关闭文档和Word应用程序
    doc.Close()
    word.Quit()

    # 释放COM对象
    del doc
    del word
    
# 使用函数转换文档
doc_path = 'D:/商务智能/商务智能实验报告合并件.docx'
pdf_path = 'D:/商务智能/商务智能实验报告合并件.pdf'
doc_to_pdf(doc_path, pdf_path)
  1. pdf文档删除某一页
from PyPDF2 import PdfReader, PdfWriter
 
def remove_page_from_pdf(input_pdf_path, output_pdf_path, page_to_remove):
    # 打开PDF文件
    pdf_input = PdfReader(input_pdf_path)
 
    # 创建一个新的PDF writer对象
    pdf_output = PdfWriter()
 
    # 遍历PDF的每一页
    num_pages = len(pdf_input.pages)
    for page_index in range(num_pages):
        # 如果不是要删除的页码,则添加到输出的PDF
        if page_index + 1 != page_to_remove:
            pdf_output.add_page(pdf_input.pages[page_index])
 
    # 写入新的PDF,移除了指定页
    with open(output_pdf_path, 'wb') as out:
        pdf_output.write(out)
 
# 使用函数,删除第3页
remove_page_from_pdf('D:/商务智能/商务智能实验报告合并件.pdf', 'D:/商务智能/output.pdf', 3)

5.合并pdf

import os
import PyPDF2
filenames=[]
#待合并pdf所在路径
dn_dirs = os.listdir(r'D:\商务智能')
while 'Thumbs.db' in dn_dirs:
    #移除Thumbs文件
    dn_dirs.remove('Thumbs.db')
#按_前面的值排序
dn_dirs.sort(key=lambda x: int(x.split('_')[0]))
for _dir in dn_dirs:
    #判断是否是pdf
    if os.path.splitext(_dir)[1] == '.pdf':
        dir_path = os.path.join('D:\商务智能', _dir)
        filenames.append(dir_path)
#合并
merger=PyPDF2.PdfFileMerger()
for filename in filenames:
    merger.append(PyPDF2.PdfFileReader(filename))
merger.write('D:\商务智能\整合pdf.pdf')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值