Python将word表格存入excel —— 格式化pg参数手册

24 篇文章 8 订阅

一、 背景

      收到一份《PostgreSQL13商用文档之PG参数参考手册》,打算学习一下,打开文档一看,151页T_T。参数虽然有分类,但不太有规律,word文档格式如下:

个人觉得如果用excel来存这个表格,并且按分类来排序或者分sheet,查阅或者学习会更方便。

由于参数实在太多,靠手工复制这个周末就不要了,之前学爬虫的时候学习了Python操作excel,想必它也能操作word,于是找文章学习了一会。

二、 整体思路

1. 格式化文档

手动去掉不需要的段落及换行符,替换完的文档长这样

 2. 程序操作

  • pip安装 python-docx(注意不是docx,否则会报错)和openpyxl 两个模块
  • 获取每一个参数类别(这里就是word的每个段落内容)
from docx import Document

# 实例化word文档
doc = Document(r'D:\postgresql\PG13参数参考手册.docx')

for paragraph in doc.paragraphs:
    print(paragraph.text)

  • 给每个表格加一行,存入上面的参数类别(格式化后),保存word文档。注意程序修改word文档的时候本地不要打开这个文档,否则会报错。
from docx import Document

# 格式化word文档,word表格新增一行,保存参数分类

doc = Document(r'D:\postgresql\PG13参数参考手册.docx')

i=0
type_list=[]
for paragraph in doc.paragraphs:
    type_list.append(paragraph.text)

for table in doc.tables:
    # 第一次执行时要打开该注释
    # table.add_row()
    table.cell(-1,0).text = "参数分类"
    # 截取内容部分,去掉编号,.,--等,去掉头尾空格
    table.cell(-1,1).text=type_list[i].split(".")[-1].split("--")[-1].strip()
    i=i+1

doc.save(r'D:\postgresql\PG13参数参考手册.docx')

  •  获取word表格第二列的每一行,存入一个list
  • 将每个list append到excel,保存即可。也注意程序修改excel文档的时候本地不要打开这个文档,否则会报错。
from docx import Document
from openpyxl import Workbook

# 实例化word文档
doc = Document(r'D:\postgresql\PG13参数参考手册.docx')

# word表格存入excel

# 实例化excel文档
wb = Workbook()

# 获取当前sheet
sheet = wb.active

# 设立表头
header = ['参数名称', '数据类型', '默认值', '取值范围', '参数单位', '参数含义','是否可session级修改','修改后何时生效','参数分类']
sheet.append(header)

# 取每个表格第二列的值
for table in doc.tables:
    row_list = []
    for i in range(len(table.rows)):
        row_list.append(table.cell(i,1).text)
    sheet.append(row_list)

wb.save(r'D:\postgresql\PG13参数参考手册.xlsx')

两三秒它就跑完了~ 执行结果如下:

3. excel格式化

简单调整下excel格式,按参数分类排序即可

三、 实现代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time  : 2022-07-08 23:57
# @Author: Hehuyi_In
# @File  : word_to_excel.py

from docx import Document
from openpyxl import Workbook


# 格式化word文档,word表格新增一行,保存参数分类

# 实例化word文档
doc = Document(r'D:\postgresql\PG13参数参考手册.docx')

i=0
type_list=[]
for paragraph in doc.paragraphs:
    type_list.append(paragraph.text)

for table in doc.tables:
    # 第一次执行时要打开该注释
    # table.add_row()
    table.cell(-1,0).text = "参数分类"
    # 截取内容部分,去掉编号,.,--等,去掉头尾空格
    table.cell(-1,1).text=type_list[i].split(".")[-1].split("--")[-1].strip()
    i=i+1

doc.save(r'D:\postgresql\PG13参数参考手册.docx')

# word表格存入excel

# 实例化excel文档
wb = Workbook()
# 获取当前sheet
sheet = wb.active

# 设立表头
header = ['参数名称', '数据类型', '默认值', '取值范围', '参数单位', '参数含义','是否可session级修改','修改后何时生效','参数分类']
sheet.append(header)

# 输出表格中每行每列的值
# for table in doc.tables:
#     for i in range(len(table.rows)):
#         for j in range(len(table.columns)):
#                 print(table.cell(i,j).text)

# 实际只需要每个表格第二列的值,因此修改一下
for table in doc.tables:
    row_list = []
    for i in range(len(table.rows)):
        row_list.append(table.cell(i,1).text)
    sheet.append(row_list)

wb.save(r'D:\postgresql\PG13参数参考手册.xlsx')

参考

《PostgreSQL13商用文档之PG参数参考手册》

python提取word内容并写入excle_lau_jw的博客-CSDN博客_python读取word数据写入excel

别再问我Python怎么操作Word了!

多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!

如何利用Python批量将Word中的信息提取到Excel?_俊红的数据分析之路的博客-CSDN博客

Python3-word文档操作(五):利用python修改word文档中的表格数据_liranke的博客-CSDN博客_python处理word表格

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值