如何将.docx文件中的表转换为python或R中的.xlsx或csv文件?

时间:2016-03-17 16:37:07

标签: r

我有一份类似下面提到的文件。桌子上方有一些文字然后有一张桌子。如何从R或python中的docx文件中提取表,然后将其转换为csv文件或xlsx文件。如果它保留了表的确切格式,我甚至不介意.txt文件。我只是不知道如何处理这个doc文件。

image of text and table in MS word

2 个答案:

答案 0 :(得分:0)

如果文档是docx,那么它就是XML。 docx文件只是一个带有各种XML"部件"的zip容器。请查看Open XML SDK,了解有关如何解析文件的一些想法。这个SDK是C#,但也许你可以从中得到一些想法。

如果您要提取表格,那就不会太糟糕了(更新复杂的docx文档可能会变得非常复杂。我现在正在努力解决这个问题。)我的提示是让事情变得更容易就是去表属性,然后到Alt文本选项卡,并为&#34;标题&#34;添加一个唯一值。领域。该值将在表属性中显示为<w:tblCaption w:val="TBL1"/>,这将使表格更容易从XML中提取。

如果您要使用Open XML文档,请获取OOXML Chrome Addin。这对于探索docx文件的内部结构非常有用。

注意:我看到了另一个SO答案的链接。这使用&#34;自动化&#34;,这当然更容易编码,但Office通过&#34;自动化&#34; MS不建议在服务器上使用。

答案 1 :(得分:0)

您可以在Python中使用python-docx从docx中提取表。 试试这个:

from docx import Document
import pandas as pd
document = Document(file_path)
tables = []
for index,table in enumerate(document.tables):
    df = [['' for i in range(len(table.columns))] for j in range(len(table.rows))]
    for i, row in enumerate(table.rows):
        for j, cell in enumerate(row.cells):
            df[i][j] = cell.text
        pd.DataFrame(df).to_excel("Table# "+str(index)+".xlsx")