python办公自动化之批量生成docx——根据excel生成word、根据word生成excel

本文介绍了如何使用Python进行办公自动化,包括从Excel读取数据并生成docx文件,以及根据docx文件反向生成Excel。通过pandas和python-docx库,实现了对word文档中特定字符串的定位与修改,以及批量生成docx文件的操作。
摘要由CSDN通过智能技术生成


系列文章

第一章 python办公自动化之批量修改docx——以修改含有表格的word文件为例
第二章 python办公自动化之批量生成docx——根据excel (word)生成word (excel)
第三章 python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel)


本文目录

一、从excel读取

使用pandas读取excel数据。

import pandas as pd
Excel_1=pd.read_excel("样例详情.xlsx",sheet_name=0)
Excel_2=pd.read_excel("样例详情.xlsx",sheet_name=1)
print(Excel_1)

输出:

   乙方    合同金额   工期
0  刘一   10000   10
1  陈二   20000   20
2  张三   30000   30
3  李四   40000   40
4  王五   50000   50
5  赵六   60000   60
6  钱七   70000   70
7  周八   80000   80
8  吴九   90000   90
9  郑十  100000  100

二、写入docx

假设word文件已经给定了,可以是合同、工资条、通知等等,但格式需得是.docx, 否则python-docx包无法操作。

1. 导入模块,读取指定文件

from docx import Document
import re #re模块用于确定写入的位置

#读取word文件实例
document = Document("建设工程勘察合同.docx")

2. 定义操作word文档的函数

#定义函数,查找关键字出现的段落
def find_index_paragraph(pattern,document):
    i=0
    id_=[]
    for paragraph in document.paragraphs:
        result = re.findall(pattern,paragraph.text)
        if result:
            print("Line",i,"Exist:",paragraph.text)
            id_.append([i,paragraph.text])
        i+=1
    print("*"*20)
    return id_   #返回paragraph的索引,以及该paragraph的内容
#定义函数,查找段落中关键字出现的sentence(python-docx称之为run)
def find_index_run(line_number,document):
    idx_=[]
    for j in line_number:
        i=0
        for run in document.paragraphs[j].runs:
            print("line_number",j,"Run",i,"Content:",run.text)
            idx_.append([j,i,run.text])
            i+=1
    print("*"*20)
    return idx_ #返回paragraph的索引,run的索引,以及对应run的内容
#定义函数,在指定位置插入需要的字符串
def change_paragraph_value(line_run_number,change,document,bold=True,underline=True):
    for i in line_run_number:
        document.paragraphs[i[0]].runs[i[1]].bold=bold #设置加粗
        document.paragraphs[i[0]].runs[i[1]].underline=underline #设置下划线
        document.paragraphs[i[0]].runs[i[1]].text=change

3. 使用定义的函数确定需要修改的位置

find_paragraph=find_index_paragraph("勘察人(全称):",document)
print(find_paragraph)

输出:

Line 2 Exist: 勘察人(全称):_______________________________
********************
[[2, '勘察人(全称):_______________________________']]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值