如何在docx中使列宽动态化?

时间:2019-06-19 08:19:58

标签: python python-3.x docx python-docx

我写了一种外语发音指南。它具有有关列表中每个单词的信息。我想使用docx在原始单词上方显示语音提示,并在单词下方显示语音部分。

每个单词之间的文本长度差异很大,发音,单词和词性之间的长度差异也是如此,如下所示。

docx强制我指定列宽,即当我使用Inches(.25)添加列时指定table.add_column(Inches(.25)).cells。我尝试玩here中列出的autofit对象,但无法弄清楚它的实际作用。

所需结果如下:

pronunciation_1 | pronunciation_2 | pronunciation_3
---------------------------------------------------
word_1          | word_2          | word_3
---------------------------------------------------
part_of_speech_1 | part_of_speech_2|part_of_speech_3

这是我尝试使其工作的代码示例。我已经尝试过几次以解决以下问题,但是我编写的代码崩溃或返回的结果比这差:

from docx import Document
from docx.shared import Inches
document = Document()
table = document.add_table(rows=3,cols=0)
word_1 = ['This', "th is", 'pronoun']
word_2 = ['is', ' iz', 'verb']
word_3 = ['an', 'uh n', 'indefinite article']
word_4 = ['apple.','ap-uh l', 'noun']
my_word_collection = [word_1,word_2,word_3,word_4]
for word in my_word_collection:
    my_word = word[0]
    pronunciation = word[1]
    part_of_speech = word[2]
    column_cells = table.add_column(Inches(.25)).cells
    column_cells[0].text = pronunciation
    column_cells[1].text = my_word
    column_cells[2].text = part_of_speech
document.save('my_word_demo.docx')

结果如下所示。这是我的代码如何在MS Word中呈现文本的屏幕截图: Code rendered in MS Word showing non-dynamic cell widths

我的具体问题是:

如何使列宽动态化?

我希望将列宽调整为每个单词(my_word,发音或part_of_speech)的三个数据点中的最长者,以使文本都不需要换行,并且每个单词周围没有多余的空格。目的是创建文档,而阅读者/用户不必为了使其可读而调整单元格宽度。

如果有帮助,Q / A here说必须单独设置像元宽度。我尝试了Googling来研究如何计算字符宽度,但是似乎有一种我不知道的在docx中处理它的方法。

0 个答案:

没有答案