在往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'

同样是循环套循环,但由于一次就可以获取所有的单元格对象,避免了耗时的操作,所以效率会比上述方法快很多。