目标:截取word中的一部分内容生成一个新的文件,并且给这个文件一个新的页眉和页脚。

解决python处理word文档时的第一个问题,如何截取。首先word和pdf是不一样的,pdf是按页划分的,word的内容不是按页划分的,同一个文件word和wps打开就可能出现不同的页码(其实也有代码可以实现,好像要判断是否超出页的范围)。

在截取word时,使用python库的python-docx,截取paragraphs(段落)和allTables(表格),首先找到段落的起始位置,删除这部分以外的内容与,表格也是如此,不再展示。部分代码如下图。

for aPara in paragraphs:p1 = aPara._element #删除代码片段if aPara.text == '':  #字符串=''a = paragraphs.index(aPara) #a的位置if paragraphs.index(aPara) > a: #大于ap1.getparent().remove(p1) #删除代码片段

值得注意的是,可以利用迭代器找到aPara(段落)后的第一个表格,方便找到表格。这个表格和EXCELL的表格也不太一样,EXCELL的表格是一个表格,word内视觉上的一个表格可以是多个表格合起来的(按行拆分表格的既视感),输出表格内容的时候容易出现out of range,这里面有坑......欢迎大家来填坑。部分代码如下图。

 for aPara in paragraphs:if aPara.text == '':ele = aPara._p.getnext()  # .迭代器next下一个数据while (ele.tag != '' and ele.tag[-3:] != 'tbl'): # 当ele.tag== ''或者ele.tag[-3:] == 'tbl'就会输出,while()本身是一个循环ele = ele.getnext()if ele.tag != '':for aTable in allTables:if aTable._tbl == ele:......

致此实现的word文件截取部分内容,这部分内容另存为一个word文件不再展示。

解决python处理word文档时的第二个问题,如何给新文件一个新的页眉页脚。python-docx是一个非常全面的库,一般来说word文件处理找它就完事了,要求输出文件的页眉带横线,python-docx库中没有这个东西,很折磨,很折磨......一个库解决不了的事情就再加一个库win32com。注意这里所说明的页眉带横线不是页眉文字或图片带下划线,要求如下图。

首先还是先用python-docx设置一下页眉页脚格式,毕竟它全面。部分代码如下图。

footer = document.sections[-1].footer
document.sections[-1].footer_distance = docx.shared.Cm(2.1)  # 修改页脚到底端的距离
header = document.sections[-1].header
document.sections[-1].header_distance = docx.shared.Cm(0.9)  # 修改页脚到底端的距离
document.sections[-1].different_first_page_header_footer = False  # 去除首页不同

接下来从页眉页脚模板.docx模板文件中复制粘贴替换输出文件的页眉页脚。当然模板并非绝对,这里页脚替换了部分内容,部分代码如下图。

# ==========================================================
w = win32com.client.Dispatch('Word.Application')
w.Visible = 0  # 后台运行,不显示
w.DisplayAlerts = 0  # 后台运行,不警告
doc1 = w.Documents.Open(template)  # 打开新的文件
w.ActiveDocument.Sections[0].Headers[0].Range.Copy()
wc = win32com.client.constants
doc1.Close()
# ==========================================================
w.Visible = 0  # 后台运行,不显示
w.DisplayAlerts = 0  # 后台运行,不警告
doc2 = w.Documents.Open(n3)
w.ActiveDocument.Sections[0].Headers[0].Range.Paste()
doc2.Close()
# ==========================================================
w.Visible = 0  # 后台运行,不显示
w.DisplayAlerts = 0  # 后台运行,不警告
doc3 = w.Documents.Open(template)
w.ActiveDocument.Sections[0].Footers[0].Range.Copy()
doc3.Close()
# ==========================================================
w.Visible = 0  # 后台运行,不显示
w.DisplayAlerts = 0  # 后台运行,不警告
doc4 = w.Documents.Open(n3)
w.ActiveDocument.Sections[0].Footers[0].Range.Paste()
w.ActiveDocument.Sections[0].Footers[0].Range.Find.ClearFormatting()
w.ActiveDocument.Sections[0].Footers[0].Range.Find.Replacement.ClearFormatting()
w.ActiveDocument.Sections[0].Footers[0].Range.Find.Execute('页脚替换前的文字', False, False,True,False, False, False, 1, False, '页脚替换后的文字', 2)
w.ActiveDocument.SaveAs(n3)
doc4.Close()

大体的一个思路就是这样的。

解决python处理word文档时的两个问题,截取内容和页眉横线相关推荐

  1. python对word文档内容进行批量替换_python 使用win32com实现对word文档批量替换页眉页脚...

    最近由于工作需要,需要将70个word文件的页眉页脚全部进行修改,在想到这个无聊/重复/没有任何技术含量的工作时,我的内心是相当奔溃的.就在我接近奔溃的时候我突然想到完全可以用python脚本来实现这 ...

  2. 打开WORD文档时提示“word无法启动转换器mswrd632 wpc”的解决方法

    打开 WORD 文档时提示" word 无法启动转换器 mswrd632 wpc "的解决方法 因为之前安装的是精简版的 office 2003 ,导致系统找不到这个文件,出现标题 ...

  3. python win32com在读取word文档时,遇到的问题

    1. 使用多线程编程,且需要调用win32com模块来打开word文档时,常见的错误如下: IDispatch = pythoncom.CoCreateInstance(IDispatch, None ...

  4. python获取word页数_使用Python的word文档的页数(Number of pages of a word document with Python)...

    使用Python的word文档的页数(Number of pages of a word document with Python) 有没有办法用Python有效地获得word文档(.doc,.doc ...

  5. python关闭word文件_使用Python退出Word文档的问题

    这是我第一次使用这个,所以要友好:)基本上我的问题是我正在制作一个程序,用于打开许多Microsoft Word 2007文档并从该文档的某个表中读取并写入该信息的Excel文件有超过1000字的文档 ...

  6. itext word模板替换_【极简Python 自动化办公】Python写入Word文档

    [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. 在上次文章中,我们学习了[用python写入excel],这次我 ...

  7. Python 操作Word文档插入图片和表格实例演示

    Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...

  8. Word处理控件Aspose.Words功能演示:使用 Python 合并 Word 文档

    当您必须将多个 Word 文档合并到一个文件中时,可能会有多种情况.例如,当多人编写文档的不同部分时,您需要在最后组合内容.另一方面,您可能需要将所有发票合并到一个 Word 文档中.为了以编程方式执 ...

  9. python读取word文档并做简单的批量文档筛选

    python读取word文档并做简单的批量文档筛选 最近参与了一项解析大量的word文档(试验报告形式)的工作,因为其中包含着一些对项目无意义的报告,所以要进行初步地筛选,通过查阅资料发现了pytho ...

  10. 【日常计算机问题】打开word文档时出现:Word在试图打开文件时遇到错误。 请尝试下列方法: *检查文档或驱动器的文件权限。*确保有足够的内存和磁盘空间。*用文本恢复转换器打开文件。

    打开word文档时弹出以下对话框: 解决办法,右键此文档--属性--勾选解除锁定: 按确定,再重新打开即可

最新文章

  1. 投缘帮CTO熊建洲:引起创业者们共鸣的14个问题
  2. as my sql 后面加表达式_Lambda 表达式有何用处?如何使用?
  3. csv文件用excel打开有多行是空的,用sublime打开空白行没有''处理方案
  4. 【每日一题】7月17日题目精讲—BOWL 碗的叠放
  5. 深入解读首个万亿级语言模型 Switch Transformer
  6. Spark下的word2vec模型训练
  7. 选择大于努力!0基础学好C语言编程,首先要掌握的是什么?
  8. Ghost网络克隆详细步骤教程
  9. HDU 3072 (强连通分量)
  10. XMind ZEN 2020下载及安装
  11. Abaqus 子结构分析 实例
  12. [二]Unity接入Steam技术[大厅,邀请好友,Steam消息事件,成就]
  13. 解决: Couldn‘t find meta-data for provider with authority xxx.fileProvider
  14. html5绘制圆形,Canvas绘制圆形
  15. Ambiguous mapping Cannot map xxx method的解决方式
  16. 迅捷在线PDF转换成Word转换器简介
  17. 华为云物联网平台的微信小程序开发
  18. 【MongoDB】mongodb | 安装 | 使用 | mdb
  19. java实现信用卡免息_Java信用卡分期手续费算法
  20. 使用卷积神经网络(CupCnn)训练人脸检测模型

热门文章

  1. 大数据与云计算之间的关系是怎样的?
  2. 计算机类课题研究方法,课题研究方法
  3. Win10系统安装office后excel等文件图标显示异常
  4. 动手学深度学习-04 过拟合、欠拟合及其解决方案
  5. 在c语言中temp的意思,temp
  6. temp的作用c语言,temp的使用
  7. foxmai邮件服务器pop,常见pop和stmp服务器地址-foxmail6或outlook邮件管理
  8. mybatis中的事务
  9. The Code is successfully generatd...使用stm32cude生成工程时报错
  10. linux下载navicat