Я думаю, что у меня есть неуклюжий способ сделать это, когда я сначала преобразовываю исходную таблицу docx в DataFrame pandas, а затем добавляю dataframe обратно в новый документ.
Исходя из того, что я собираю, файлы документов (* .docx, * .doc, * .txt) читаются как строки, поэтому мы должны обрабатывать данные как строки. Это означает, что вам нужно знать количество столбцов и строк таблицы.
Если исходный файл документа называется «Stationery.docx», это может помочь.
import docx
import pandas as pd
import numpy as np
doc = docx.Document("Stationery.docx")
df = pd.DataFrame()
tables = doc.tables[0]
##Getting the original data from the document to a list
ls =[]
for row in tables.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
ls.append(paragraph.text)
def Doctable(ls, row, column):
df = pd.DataFrame(np.array(ls).reshape(row,column)) #reshape to the table shape
new = docx.Document()
word_table =new.add_table(rows = row, cols = column)
for x in range(0,row,1):
for y in range(0,column,1):
cell = word_table.cell(x,y)
cell.text = df.iloc[x,y]
return new, df