我根据它们的段落难以获取页码。我的代码如下。 para_list存储找到短语i' m的段落。然后我尝试选择范围和 然后检索页码。然而,我收到的所有内容都是重复相同的页码。有人可以提出另一种方法或揭示我做错了什么。感谢
for para in doc.Paragraphs:
count=count+1
if phrase in para.Range.Text:
para.Range.Select
para_list.append(count)
p_list.append(doc.ActiveWindow.Selection.Information(constants.wdActiveEndAdjustedPageNumber))
答案 0 :(得分:2)
在我看来,使用Range.Information[constants.wdActiveEndAdjustedPageNumber]
是正确的方式(请参阅How do I find the page number for a Word Paragraph中的第二个答案)。但是,我不确定你为什么选择这个选项,而不是段落范围本身。我猜(不能在这里尝试)以下内容应该有效:
for count, para in enumerate(doc.Paragraphs):
if phrase in para.Range.Text:
pageNum = para.Range.Information(constants.wdActiveEndAdjustedPageNumber)
print 'page for para #%s is %s' % (count, pageNum)
文体说明:para_list
和p_list
?名称应更清楚地标明每个容器的用途。
答案 1 :(得分:0)
作为黑客你可以使用
range_obj =doc.ActiveWindow.Selection.GoTo(constants.wdGoToPage,constants.wdGoToNext,1 )
range_obj2 =doc.ActiveWindow.Selection.GoTo(constants.wdGoToPage,constants.wdGoToNext,1 )
char_index1= range_obj.start #will give you the character index for end of one page
char_index2 = range_obj2.start # character index for next page
#Compare with the paragraph index. The min positive difference tells you the page the paragraph is on
position= doc.Paragraphs(index).start