from docx import Document
from openpyxl import Workbook
from openpyxl.styles import Alignment, Border, borders, colors,Side# 原始word文件和要生成的Excel文件
fn_word = 'E:\\Desktop\\提取章节标题.docx'
fn_excel = fn_word[:-5] + '2.xlsx'# 创建空白Excel文件,获取第一个空白工作表
wb = Workbook()
ws = wb.worksheets[0]
# 添加表头
ws.append(['一级目录','二级目录','三级目录'])first2,first3 = 1,1
# 遍历word文件中的所有段落文本
for p in Document(fn_word).paragraphs:# 删除段落文本两侧的空白字符txt = p.text.rstrip()# 直接跳过空行if not txt:continue# 添加为一级标题if p.style.name == 'Heading 1':first2 = 1print(p.text)ws.append([txt,'',''])# 添加为二级标题elif p.style.name == 'Heading 2':print(p.text)if first2==1:# 第一个二级目录,不添加新行# 直接和一级目录写在同一行#print(txt)list(ws.rows)[-1][1].value = txtfirst2 = first2 + 1elif first2>1:# 新增一行添加为二级标题#print(txt)ws.append(['',txt,''])first3 = 1# 添加为三级标题elif p.style.name == 'Heading 3':print(p.text)if first3==1:# 第一个三级目录,不添加新行,直接写和二级在同一行#print(txt)list(ws.rows)[-1][2].value = txtfirst3 = first3 + 1elif first3>1:# 新增一行添加为三级目录print(txt)ws.append(['','',txt])wb.save(fn_excel)# 设置单元格边框
side = Side(border_style=borders.BORDER_THICK,color=colors.BLACK)
for row in ws.rows:for cell in row:cell.border = Border(top=side, bottom=side,left=side, right=side)
start1, start2 = 1, 1
for index, row in enumerate(ws.rows, start=1):# 合并第一列的指定单元格,水平左对齐,垂直居中对齐if row[0].value:if index > start1:ws.merge_cells(f'A{start1}:A{index-1}')ws[f'A{start1}'].alignment = Alignment(horizontal='left',vertical='center')start1 = index# 合并第二列的指定单元格,水平左对齐,垂直居中对齐if row[1].value:if index > start2:ws.merge_cells(f'B{start2}:B{index-1}')ws[f'B{start2}'].alignment = Alignment(horizontal='left',vertical='center')start2 = index
if index > start1:ws.merge_cells(f'A{start1}:A{index}')ws[f'A{start1}'].alignment = Alignment(horizontal='left',vertical='center')if index > start2:ws.merge_cells(f'B{start2}:B{index}')ws[f'B{start2}'].alignment = Alignment(horizontal='left',vertical='center')wb.save(fn_excel)

效果图

获取结果

项目场景:

Python提取Word文件中的目录标题保存为Excel文件,本代码以获取三级标题为例


问题描述:

python3安装docx模块出现Import Error: No module named 'exceptions'

  • 卸载不兼容的docx,直接安装python-docx
  • 如果pip install docx 过请先卸载,输入如下指令:
    • pip uninstall docx
  • 方法一:
    • pip install python-docx

提示:pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能,是在直接在cmd中运行的,不需要进入到python中运行


学习引用:

利用python批量处理Word文件——正文、标题

https://blog.csdn.net/xtfge0915/article/details/83479922

Python提取Word文件中的目录标题保存为Excel文件相关推荐

  1. Python提取PDF文件中的表格文本保存为Excel文件

    "Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020 ...

  2. Python爬取网页中表格数据并导出为Excel文件

    本文使用自己创建的网页进行模拟和演示,在爬取真实网页时,分析网页源代码然后修改代码中的正则表达式即可. 假设某网页源代码为: 在Hbuilder中单击菜单"运行",选择使用Goog ...

  3. python提取word表格中数据

    程序分析 今天文章介绍一个实战案例,与自动化办公相关:案例思想是源于前两天帮读者做了一个 demo ,需求大致将一上百个 word 中表格内容提取出来(所有word 中表格样式一样),把提取到的内容自 ...

  4. ffmpeg提取mp4文件中的音频,保存为wav文件

    如题,一个命令行即可: ffmpeg -i 123.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 -f wav 123.wav 这样就生成了一个wav文 ...

  5. python打开指定文件-python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...

  6. python文件中的代码调用以及“__init__.py“ 文件说明

    python文件中的代码调用以及"__init__.py" 文件说明 如何调用另一个python文件中的代码 同一文件目录下 不同文件目录下 "__init__.py&q ...

  7. 【科学文献计量】将Endnote中的文献读入python中进行数据分析,并顺便将结果保存为Excel文件,并封装函数直接调用

    将Endnote中的文献读入python中进行数据分析,并顺便将结果保存为Excel文件 1 需求 2 功能完成 2.1 文献下载 2.2 文献导入到Endnote 2.3 文献导出 2.4 文件加载 ...

  8. python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法

    在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...

  9. ubuntu中/usr目录下无法直接复制粘贴文件或目录

    遇到问题:直接鼠标右键复制粘贴或ctrl+c     ctrl+v不管用 利用终端窗口 sudo cp -r+"空格"+~/你要复制的文件的原目录/你要复制的文件+"空格 ...

最新文章

  1. 计算机四级网络工程师考点速查,全国计算机等级考试标准教程:四级网络工程师...
  2. EHPC通过断点续算和自动伸缩在抢占式实例上实现低成本HPC计算
  3. CentOS7中NAT网卡设置静态IP
  4. Linux 蓝牙读写,实战Linux Bluetooth编程(三) HCI层编程
  5. 定时器和promise_从Promise链理解EventLoop
  6. 这个情人节,工程师用阿里云来试着表达不一样的爱意 1
  7. Macbook/Mac OS中阅读代码软件推荐
  8. 带时间窗的电动汽车路径规划(智能算法求解)
  9. Android 虚拟Camera实现方案
  10. 最近智商拙计,做做题补一下
  11. (第二章)HTML基本标记
  12. 帮优质粉丝脱单|【英国女】No.33|22岁,硕士,喜欢旅行爱好做饭,消费者心理学...
  13. 超短波视距通信极限距离计算公式
  14. P014魔改8G显存
  15. 【flask】蓝图(Blueprint)
  16. Qt简单项目实例之(二)——多功能计算器
  17. 新手的linux之旅 五、安装IE浏览器
  18. 【论文解析】D2FQ Device-Direct Fair Queueing for NVMe SSDs
  19. 金蝶服务器如何显示在任务栏,报表窗口看不见工具栏界面怎么办?
  20. 多尺度双边滤波及基于小波变换的非线性扩散

热门文章

  1. 开源框架XWIKI搭建介绍
  2. Excel VBA:数据管理与维护
  3. 巨人2012年Q2财报解读:刘伟电话会议回答分析师提问
  4. matlab 雅各比符号,密码学与编码理论(第2版)(密码学方面的经典著作)
  5. IIC(I2C)总线设备地址,例如E2PROM、CH455G等器件应用
  6. 慢慢整理一下用到的游戏相关工具
  7. iOS小技能:监听H5页面goBack返回事件 网页监听APP返回键 (NavigationBackItemInjection)
  8. flash怎么强制gc_Adode Flash初级教程
  9. html5播放器视频倍速播放功能
  10. Odoo客户成功案例访谈:机加工厂企业信息化的心路历程探讨