使用单词时Pywin32的奇怪行为

时间:2017-07-19 12:15:39

标签: python python-3.x ms-word python-3.5 pywin32

我这样做:

import win32com.client as win32
infile = r"D:\path\to\file.docx"
# def word_table(infile):
word = win32.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(infile)
word.Visible = False
rng = doc.Range()
for tbl in rng.Tables:
    for i in range(tbl.Rows.Count):
        page_name = tbl.Cell(i, 1).Range.Paragraphs(1).Range.Text
        hyper_link = tbl.Cell(i, 2).Range.Paragraphs(1).Range.Hyperlinks(1).Address
        print(page_name,  hyper_link)

这仅打印hyper_link而不是page_name(即使我更改了订单)。 但如果我这样做:

print(page_name)
print(hyper_link)

这很好用。 我猜不出这种意外行为的原因。

我发布它作为这个问题的答案: How to extract hyperlinks from MS Word table with Python?

1 个答案:

答案 0 :(得分:0)

此行为是由于Microsoft Word表具有表格单元格结束字符。

因此,page_name = tbl.Cell(i, 1).Range.Paragraphs(1).Range.Text会抓取单元格中的任何文字以及CR'\r')和BEL('•')。因此它打印不正确。

print(page_name.split('\r')[0] , hyper_link)在这种情况下运作得很好。