我这样做:
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?
答案 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)
在这种情况下运作得很好。