我一直在使用pythondocx库和oxml来自动更改word文档中的表。不幸的是,无论我做什么,我都不能在表格单元格中换行。在
我成功地操作了表的“autofit”和“fit text”属性,但它们都没有对单元格中文本的包装起作用。我可以看到在我的word文档的xml版本中有一个“w:noWrap”,无论我做什么,我都无法操作和删除它。我相信是它造成了我桌子上的单词包装。在
例如,在本例中,我添加了一个表。我可以调整单元格中的文本,并将“自动调整”设置为“真”,但我一辈子都无法换行文本:
from docx import Document
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
doc = Document()
table = doc.add_table(5,5)
table.autofit = True # Does Autofit but not wrapping
tc = table.cell(0,0)._tc # As a test, fit text to cell 0,0
tcPr = tc.get_or_add_tcPr()
tcFitText = OxmlElement('w:tcFitText')
tcFitText.set(qn('w:val'),"true")
tcPr.append(tcFitText) #Does fitting but no wrapping
doc.save('demo.docx')
如果有任何帮助或提示,我将不胜感激。在
<w:noWrap>
元素似乎是控制表单元格属性的元素<w:tcPr>
的子元素。在您应该能够使用XPath从表单元格元素访问它:
这里的
noWraps
变量将是一个包含零个或多个<w:noWrap>
元素的列表,在您的例子中可能是一个。在删除它可能是最简单的方法,您可以这样完成:
^{pr2}$您还可以采用设置
w:noWrap
元素的w:val
属性值的方法,但随后必须指定属性名称空间的Clark名称,这会增加一些额外的麻烦,并且不会产生不同的结果,除非出于某种原因您希望保留该元素。在相关问题 更多 >
编程相关推荐