在往word文档中插入表格后需要给表格赋值,一般都是先遍历该表格的行,再遍历列,获取单元格对象,并给单元格赋值。
贴上一般方法的代码:
from docx import Document # 创建doc对象 doc_obj = Document() rows = 1000 cols = 100 # 创建表格 table = doc_obj.add_table(rows, cols) for row_index in range(rows): for col_index in range(cols): # 给单元格对象赋值 table.cell(row_index, col_index).text = 'test'
此种方法循环套循环,但是由于每次都要获取单元格对象,获取单元格对象是个耗时的操作,尤其在表格行列数很大的时候,因此给表格赋值的效率就会变的很差以至于消耗很多时间。
贴上优化过后的代码:
from docx import Document # 创建doc对象 doc_obj = Document() rows = 1000 cols = 100 # 创建表格 table = doc_obj.add_table(rows, cols) # 一次性获取所有的单元格,返回值为所有单元格组成的列表 table_cells = table._cells for i in range(rows): # 获取这一行所有的数据 row_cells = table_cells[i * cols:(i + 1) * cols] for j in range(cols): row_cells[j].text = 'test'
同样是循环套循环,但由于一次就可以获取所有的单元格对象,避免了耗时的操作,所以效率会比上述方法快很多。