问题标签 [python-docx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2359 浏览

python - Python Docx:在两个给定字符串之间提取表

我正在尝试提取在 word 文档中的两段文本之间找到的特定表列表。我为此使用python docx,我面临的问题是可以通过使用解析文本

而表是通过使用解析的

这将文本和表格分开,使得仅在两段文本之间包含表格列表变得更加困难。我正在尝试的方法是使用下表中每个列表的元素来获取段落/表格的地址。

然后我会提取每个表的地址并检查它是否在起始和结束文本的地址之间。但是,问题是所有表地址都大于文本的起始地址和结束地址,我找不到任何关于 python docx 如何找到这些地址的文档,因为我假设地址是按顺序逐步通过文档的。这种方法行得通吗?我可以尝试什么其他方法来查看 word 文档中两段文本之间的那些表格?

0 投票
1 回答
575 浏览

python - 您能否仅修改 XML 文件中的文本字符串并仍保持 .docx 封装的完整性和功能性?

我想将数据输入 Microsoft Excel 电子表格,并让该数据与其他文档和网络表单进行交互和写入。

成功后,我正在使用 xlwings 从 Excel 电子表格中提取数据。现在,我一直在处理 .docx 文件。此处的目标是将 Excel 数据写入 Microsoft Word .docx 文件模板的特定部分并创建一个新文件。

我的具体问题是:

您能否仅修改 word/document.xml 文件中的文本字符串,并仍保持其 .docx 封装的完整性和功能性?似乎在对 Word 文档进行最轻微的更改时,XML 代码中可能会发生许多变化。我一直在使用 python-docx 和 lxml,但我不确定我想要做的事情是否可以通过这条路线实现。

任何建议或经验分享将不胜感激。我觉得我已经阅读了至少 5 次通过谷歌搜索很容易发现的每篇文章。

让我知道是否有任何需要澄清的地方。

一些需要注意的事情:我大约 2 个月前开始接触编码。那段时间我一直在集中精力做这件事,我觉得我正在学习基本概念,但我的知识存在严重差距。

这是我的工具:Yosemite 10.10、Microsoft Office 2011 for Mac

0 投票
0 回答
214 浏览

python - 如何使用python-docx在段落中替换文本后保持段落样式

我在使用 python docx 库格式化 Docx 文件时遇到问题。我可以替换段落中的一些文本,但不能维护文本字体。以下是我的方法 -

现在我需要替换段落中的几个单词,(假设用 val 替换段落中的键)并且段落索引(pid)是已知的,因此我正在执行以下任务:

保存此文档后,现在我可以看到文件中的替换文本但无法维护字体。我的意思是文件中较早的常用字体是“Times New Roman”,但在文本替换后段落字体和粗细不同。那么如何保持段落字体和其他类似于文本替换之前的样式。

PS 在 google web2py 用户组中得到了很好的响应,它可以在运行级别完成,但问题是,我要替换的文本不是单个运行,而是运行块。

我也尝试提取段落字体样式,但 docx 库不返回正确的字体。

0 投票
1 回答
954 浏览

python - 从 Python docx 中的 .docx (Word) 文件中读取标头

我正在使用库python-docx解析 docx 文件。我需要阅读文档的标题以及段落,但是我在他们的文档中找不到任何关于文档标题的信息。有关于将标头写入新文件的文档,但没有关于读取标头的文档。有没有办法做到这一点?

0 投票
1 回答
728 浏览

python-2.7 - 将 docx 的一部分提取到新的 docx 中

我有一个只有文本的 docx 文件。我想创建一个新的 docx 文件,其中仅包含原始 docx 中页面的一部分。我为此使用 python-docx。到目前为止,我已经能够遍历原始 docx 文档并将原始文档中的每个所需段落/运行复制到新文档中,如下所示(我相信这个例子应该制作一个精确的副本):

尽管我正在复制所有样式信息,但我似乎遗漏了一些东西,因为输出缺少一些格式。

0 投票
1 回答
1655 浏览

python - python-docx,制作word文件,需要检测是否在新页面

我正在使用python-docx 模块从数据中按需生成大量文档。当我使用常规的 document.add_picture 命令插入图形时,有几个部分,如下所示:

我遇到的问题是,许多图片是完成一个部分的图表,因此在图表之后我想移动到新页面,但是图像的大小不同,因此有时它们已经填满了页面。因此,如果我在图像之后放置一个分页符,我有时会得到一个漂亮的数字,然后是下一节的新页面,而其他时候(如果图像填满页面),流程已经移动到下一页和分页符将留下一个空白页面。我正在寻找一种方法来防止这种情况。如果有获取当前页码的好方法,我可以看看如何解决这个问题。转向使用“部分”会解决这个问题吗(例如,如果我们已经在空白页面上,部分会自动开始一个新页面但不会推进页面)?检测正在处理的文档中的页面前进将是理想的,

解决方案

简短的正确答案如下,但我花了一些时间和错误来找出正确的使用方法,所以这里记录一下如何使用 page_break_before 使标题或段落跳转到的最小代码片段下一页:

这个python将生成一个测试word文档,其中标题在第一页,然后标题跳到下一页,下面的段落就在它下面。关键技巧是paragraph_format 访问,它还允许您使用来自paragraph_format 选项的对齐设置、keep_together 设置等。我需要从几个示例中将其拼凑在一起,以找出确切设置值的位置,因此我想我会将其发布以供后代使用。

0 投票
2 回答
3730 浏览

python - 如何在 python 中使表格标题单元格同时加粗和下划线?

我正在使用 python 3.4 创建一个表,我想让标题既粗体又加下划线。以下代码将使标题变为粗体:

如果我将第 3 行更改为:

它会使文本加下划线,但不加粗。有没有办法让标题的文本既粗体又加下划线?

0 投票
2 回答
10170 浏览

python - Python Docx - 部分 - 页面方向

以下代码尝试使用landscape方向,但文档创建为potrait.
您能建议问题出在哪里吗?

当我以 XML 格式读回代码时

我不太了解 XML,假设部分标签应该位于顶部而不是底部的 TEXT 标签之上????

0 投票
1 回答
1742 浏览

python - 使用 python-docx 的 _document 方法

我正在使用 python-docx 并尝试插入 a<w:bookmarkStart>标签。我没有看到任何直接创建标签的 API 方法。document._document_part因此,我在 Google 上搜索了几个参考资料,以使用该属性访问原始 XML 。但是,当我尝试使用它时,python 告诉我它不存在:

我正在使用 python-docx 0.8.5。

有没有添加<w:bookmarkStart>标签的方法?

0 投票
1 回答
4552 浏览

python - Python - 从 docx 文件中删除页眉和页脚

我需要删除许多 docx 文件中的页眉和页脚。我目前正在尝试使用 python-docx 库,但目前它不支持 docx 文档中的页眉和页脚(正在进行中)。

有没有办法在 Python 中实现这一点?

据我了解,docx 是一种基于 xml 的格式,但我不知道如何使用它。

PSI有个想法用lxml或者BeautifulSoup来解析xml并替换一些部分,但是看起来很脏

UPD。感谢肖恩,一个好的起点。我对脚本进行了一些更改。这是我的最终版本(它对我很有用,因为我需要编辑许多 .docx 文件。我正在使用 BeautifulSoup,因为标准 xml 解析器无法获得有效的 xml-tree。另外,我的 docx 文档没有xml 中的页眉和页脚。他们只是将页眉和页脚的图像放在页面顶部。此外,为了提高速度,您可以使用 lxml 代替 Soup。

所以,就是这样:) 我知道,代码不干净,很抱歉。