Reading Table Contet In Header And Footer In MS-Word File Using Python

扶醉桌前 提交于 2019-12-02 10:31:56

问题


This is my extended question for the question:

How to read contents of an Table in MS-Word file Using Python?

The solution provided by @YusuMishi is great, but it does not catch the headers in the header and footer.

Let me elaborate on that:

Using the code

import win32com.client as win32
import os
word = win32.Dispatch("Word.Application")
word.Visible = 0
p = os.path.abspath("Catch my tables.docx")
word.Documents.Open(p)
doc = word.ActiveDocument
print doc.Tables.Count

I will get 2 printed (Table 1 and Table 2)

How do I go through the information in Table 0 and Table N

Get the document here


回答1:


Accessing Headers and Footers is a bit tricky. Here is how to do it:

HeaderTable = doc.Sections(1).Headers(1).Range.Tables(1)
FooterTable = doc.Sections(1).Footers(1).Range.Tables(1)

You can get the table count this way:

HeaderTablesCount = doc.Sections(1).Headers(1).Range.Tables.Count
FooterTablesCount = doc.Sections(1).Footers(1).Range.Tables.Count

And get the text from cells this way:

HeaderTable.Cell(1,1).Range.Text
FooterTable.Cell(1,1).Range.Text



回答2:


Unfortunately I'm not phyton programmer but have some knowledge of MS-Word VBA and objects hierarchy. This would be to much text to put in comment (where I'd rather put this tip).

If you search your table you have to analyse different Document.StoryRanges to find your table. There are Footers and Headers but they are additionally divided into different types. So, to find you Table 0 you could use something of this structure:

This is VBA code!! I hope you could adjust to your needs. And do it separately for you footers.

doc.StoryRanges(wdEvenPagesHeaderStory).Tables.Count
doc.StoryRanges(wdFirstPageHeaderStory).Tables.Count
doc.StoryRanges(wdPrimaryHeaderStory).Tables.Count


来源:https://stackoverflow.com/questions/16485343/reading-table-contet-in-header-and-footer-in-ms-word-file-using-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!