当前位置: 首页 > 面试题库 >

如何使用Python读取MS-Word文件中表的内容?

拓拔耀
2023-03-14
问题内容

如何读取和处理DOCX文件中表格的每个单元格的内容?

我在Windows 7和PyWin32上使用Python 3.2来访问MS-Word文档。

我是一个初学者,所以我不知道访问表格单元格的正确方法。到目前为止,我只是这样做:

import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False 
doc = word.Documents.Open("MyDocument")

问题答案:

这是在Python 2.7中对我有效的方法:

import win32com.client as win32
word = win32.Dispatch("Word.Application")
word.Visible = 0
word.Documents.Open("MyDocument")
doc = word.ActiveDocument

要查看您的文档有多少张表:

doc.Tables.Count

然后,您可以通过索引选择所需的表。请注意,与python不同,COM索引从1开始:

table = doc.Tables(1)

要选择一个单元格:

table.Cell(Row = 1, Column= 1)

要获取其内容:

table.Cell(Row =1, Column =1).Range.Text

希望这会有所帮助。

编辑:

一个根据标题返回Column index的函数示例:

def Column_index(header_text):
for i in range(1 , table.Columns.Count+1):
    if table.Cell(Row = 1,Column = i).Range.Text == header_text:
        return i

那么您可以通过这种方式访问​​所需的单元格,例如:

table.Cell(Row =1, Column = Column_index("The Column Header") ).Range.Text


 类似资料:
  • 问题内容: 为了在python中处理MS Word文件,有python win32扩展名,可以在Windows中使用。我该如何在linux中做同样的事情?有图书馆吗? 问题答案: 您可以对antiword进行子过程调用。Antiword是一个Linux命令行实用程序,用于从word doc中转储文本。适用于简单文档(显然会丢失格式)。它可以通过apt(可能是RPM)获得,也可以自己编译。

  • 本文向大家介绍在PHP中读/写MS Word文件,包括了在PHP中读/写MS Word文件的使用技巧和注意事项,需要的朋友参考一下 Microsoft强烈建议不要通过COM对象使用Office文档自动化。它引用以下内容- “ Microsoft当前不建议或支持任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)中的Microsoft Office应用程序自动

  • 我正在开发一个程序,需要从MS Word文档中提取两个图像,以便在另一个文档中使用它们。我知道图像的位置(文档中的第一个表),但当我试图从表中提取任何信息(即使只是纯文本)时,我会得到空单元格。 这是我想从中提取图像的Word文档。我想从第一页(第一个表,第0行和第1行,第2列)中提取“Rentel”图像。 我尝试了以下代码: 这只会给我空话。。。 我已经读过这篇讨论和这篇文章,问题可能是“包含在

  • 我正在尝试从C#中的文档文件中读取文本 我无法在C#中创建新文档。 我尝试使用“using microsoft.office.interop.word”或“using system.windows.documents”,但它无法识别代码“Document doc=new Document”。 此外,如何从.docx文件中读取文本? 会有什么问题?TNX

  • 如何使用Angular或JavaScript在超文本标记语言页面中显示Microsoft Word文件。请推荐任何提供此功能的库。

  • 我正在阅读一个word文件,使用Python在文档中有许多表。我只需要从某些表中提取数据,这取决于它们出现的部分。有没有办法通过文件搜索,到达某一行,读取该行后面出现的表格? 例如,如果文档这个词类似于: 1 2 3 [表格] 4 5 6 [表格] 我能在“6”之后阅读表格吗? 读取“第二个表”不起作用,因为出现在该表之前的表的数量是任意的;我需要读它,因为它出现在“6”之后。