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