0
点赞
收藏
分享

微信扫一扫

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


一、 背景

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

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

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

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

二、 整体思路

1. 格式化文档

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

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

 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)

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

  • 给每个表格加一行,存入上面的参数类别(格式化后),保存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')

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

  •  获取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')

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

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

3. excel格式化

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

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

三、 实现代码

#!/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的博

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

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

如何利用Python批量将Word中的信息提取到Excel?_俊红的数据分hon处理word表格

举报

相关推荐

0 条评论