使用 xlsxwriter 将表格从 Word (.docx) 写入 Excel (.xlsx)
Write tables from Word (.docx) to Excel (.xlsx) using xlsxwriter
我正在尝试为表解析单词 (.docx),然后使用 xlsxwriter 将这些表复制到 excel。
这是我的代码:
from docx.api import Document
import xlsxwriter
document = Document('/Users/xxx/Documents/xxx/Clauses Sample - Copy v1 - for merge.docx')
tables = document.tables
wb = xlsxwriter.Workbook('C:/Users/xxx/Documents/xxx/test clause retrieval.xlsx')
Sheet1 = wb.add_worksheet("Compliance")
index_row = 0
print(len(tables))
for table in document.tables:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
#print (data)
#big_data.append(data)
Sheet1.write(index_row,0, str(row_data))
index_row = index_row + 1
print(row_data)
wb.close()
这是我想要的输出:
但是,这是我的实际输出:
我知道我当前的输出生成了一个字符串列表。
我是否可以使用 xlsxwriter 获得我想要的输出?非常感谢任何帮助
我会使用 pandas
包,而不是 xlsxwriter
,如下所示:
from docx.api import Document
import pandas as pd
document = Document("D:/tmp/test.docx")
tables = document.tables
df = pd.DataFrame()
for table in document.tables:
for row in table.rows:
text = [cell.text for cell in row.cells]
df = df.append([text], ignore_index=True)
df.columns = ["Column1", "Column2"]
df.to_excel("D:/tmp/test.xlsx")
print df
输出插入 excel 中的以下内容:
>>>
Column1 Column2
0 Hello TEST
1 Est Ting
2 Gg ff
这是我的代码更新部分,它使我能够获得我想要的输出:
for row in block.rows:
for x, cell in enumerate(row.cells):
print(cell.text)
Sheet1.write(index_row, x, cell.text)
index_row += 1
输出:
我正在尝试为表解析单词 (.docx),然后使用 xlsxwriter 将这些表复制到 excel。 这是我的代码:
from docx.api import Document
import xlsxwriter
document = Document('/Users/xxx/Documents/xxx/Clauses Sample - Copy v1 - for merge.docx')
tables = document.tables
wb = xlsxwriter.Workbook('C:/Users/xxx/Documents/xxx/test clause retrieval.xlsx')
Sheet1 = wb.add_worksheet("Compliance")
index_row = 0
print(len(tables))
for table in document.tables:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
#print (data)
#big_data.append(data)
Sheet1.write(index_row,0, str(row_data))
index_row = index_row + 1
print(row_data)
wb.close()
这是我想要的输出:
但是,这是我的实际输出:
我知道我当前的输出生成了一个字符串列表。
我是否可以使用 xlsxwriter 获得我想要的输出?非常感谢任何帮助
我会使用 pandas
包,而不是 xlsxwriter
,如下所示:
from docx.api import Document
import pandas as pd
document = Document("D:/tmp/test.docx")
tables = document.tables
df = pd.DataFrame()
for table in document.tables:
for row in table.rows:
text = [cell.text for cell in row.cells]
df = df.append([text], ignore_index=True)
df.columns = ["Column1", "Column2"]
df.to_excel("D:/tmp/test.xlsx")
print df
输出插入 excel 中的以下内容:
>>>
Column1 Column2
0 Hello TEST
1 Est Ting
2 Gg ff
这是我的代码更新部分,它使我能够获得我想要的输出:
for row in block.rows:
for x, cell in enumerate(row.cells):
print(cell.text)
Sheet1.write(index_row, x, cell.text)
index_row += 1
输出: