我正在使用python-docx模块自动创建Word文档的过程.特别是,我正在创建一个多选项测试,其中问题编号为1,2,3.,......并且在每个问题下有4个答案应标记为A.,B.,C.和D.我用一种风格来创建编号列表和字母列表.但是,我不知道如何重启这些字母.例如,第二个问题的答案范围是E.,F.,G.,H.有谁知道如何将字母重新启动回A?我可以手动指定答案字符串中的字母,但我想知道如何使用样式表.谢谢.
我有几个单词文件,每个文件都有特定的内容.我想要一个片段向我展示或帮助我弄清楚如何将word文件合并到一个文件中,同时使用Python docx库.
例如,在pywin32库中,我执行了以下操作:
rng = self.doc.Range(0, 0)
for d in data:
time.sleep(0.05)
docstart = d.wordDoc.Content.Start
self.word.Visible = True
docend = d.wordDoc.Content.End - 1
location = d.wordDoc.Range(docstart, docend).Copy()
rng.Paste()
rng.Collapse(0)
rng.InsertBreak(win32.constants.wdPageBreak)
Run Code Online (Sandbox Code Playgroud)
但我需要在使用Python docx库而不是win32.client
我不确定我是否遗漏了任何明显的东西,但是我没有找到任何关于如何在文档中的某个特定位置插入Word元素(例如表格)的文档?
我使用以下方法加载现有的MS Word .docx文档:
my_document = Document('some/path/to/my/document.docx')
Run Code Online (Sandbox Code Playgroud)
我的用例是获取文档中书签或部分的"位置",然后继续在该点下面插入表格.
我正在考虑一个允许我按照这些方式做某事的API:
insertion_point = my_document.bookmarks['bookmark_name'].position
my_document.add_table(rows=10, cols=3, position=insertion_point+1)
Run Code Online (Sandbox Code Playgroud)
我看到有计划实现类似于MS Word API的'range'对象的东西,这将有效地解决这个问题.在此期间,有没有办法指示document对象方法在哪里插入新元素?
也许我可以粘贴一些lxml代码来查找节点并将其传递给这些python-docx方法?任何关于这个主题的帮助将不胜感激!谢谢.
我在'/ var/code/oa'有一个doc.docx文件.我需要用python-docx读它.我写这个:
from docx import Document
document = Document('/var/code/oa/doc.docx')
Run Code Online (Sandbox Code Playgroud)
然后,有错误.. PackageNotFoundError:在'/var/code/oa/doc.docx'找不到包
为什么?
谢谢@soon.呃,这很愚蠢.原因是文件,它必须是docx文件.我只是将文件名更改doc为docx,它不是真正的docx文件.
我正在寻找一个优雅的解决方案,以找到文档中的哪个页面出现我存储在python词典/列表中的某个单词.
我首先将.docx格式视为输入,并查看了具有搜索功能的PythonDocx,但显然没有docx/xml格式的页面属性.如果我解析文档,我可以<w:br w:type="page"/>在xml树中查找出现但不幸的是,这些不显示非强制分页符.
我甚至考虑首先将文件转换为PDF并使用类似PDFminer的内容来逐页解析文档.
是否有任何直接的解决方案来搜索.docx文档中的字符串并返回它发生的页面
[('foo' ,[1, 4, 7 ]), ('bar', [2]), ('baz', [2, 5, 8, 9 )]
Run Code Online (Sandbox Code Playgroud) doc=Document()
table = doc.add_table(rows = 13, cols = 5)
table.style = 'Table Grid'
row = table.rows[0]
row.cells[0].text = ('text').bold
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个表格并加粗文本,但无法正确获得语法
我知道这是一个重复的问题,但这些答案对我不起作用.我有一个word文件,它包含一个表,现在我希望该表作为我的python程序的输出.我正在使用python 3.6,我也安装了python -docx.这是我的数据提取代码
from docx.api import Document
document = Document('test_word.docx')
table = document.tables[0]
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
print (data)
Run Code Online (Sandbox Code Playgroud)
我希望结果在docx文件中看起来完全正确.提前致谢
我正在使用pandoc(通过pypandoc)将docx文件转换为非Windows机器上的markdown.这些文件可以包含图像,也可以包含其他嵌入对象.
pandoc实际上能够将嵌入式Powerpoint演示文稿(转换为EMF文件)转换,但它无法处理Excel对象(它会忽略它们).目标是使用python将这些嵌入的Excel对象转换为图像,以便它们可以作为HTML输出的一部分显示.
只要可以使用python API包装,就可以使用以其他语言编写的组件(例如bash脚本).
我意识到这可能是非Windows平台上的高级订单(例如,没有Microsoft库win32com).有没有人对此有任何成功,或有任何有根据的猜测如何进行?
要显示的单元格区域是什么?
所有嵌入对象的核心问题是确定应该显示哪些部分,因为这是核心功能.
必须有一种方法来确定要显示哪些单元格,因为在读取docx文件的内容时,Word可以使用该信息.
这是问题的症结所在.如果实际算法不能考虑到这一点,那么答案仍将被接受,只要它提供了一种提取信息的方法.
根据建议探索文件本身的结构,这里是我观察到的:如果你创建一个Mydoc.docx带有嵌入式Excel文件的简单docx文档(),你可以通过制作docx文件的副本来检查它的内容(重命名它)使用.zip扩展名)并解压缩.
Mydoc/word/document.xmlMydoc/word/embeddings/Excel_Sheet_1.xlsx(或类似的东西)中.如果这是要走的路,那么问题分为两部分:
Excel_Sheet_1.xlsx为图像(如何知道图像和单元格区域是图像的一部分?).document.xml以使其显示"指向图像"而不是指向嵌入文件.OOXML相当复杂,特别是当你尝试做一些像我想做的那样"基本"的事情时......有没有人从Unix平台走到那里并带回一些明智的东西?
python-docx ×10
python ×8
python-3.x ×2
docx ×1
excel ×1
insertion ×1
ms-word ×1
openxml ×1
pandoc ×1
parsing ×1
pdfminer ×1
python-2.7 ×1
xml ×1