这是一些代码:
from openpyxl import load_workbook
wb = load_workbook('myfile.xlsx')
ws = wb.active
# data for filling Excel table
rows = (
(88, 46, 57),
(89, 38, 12),
(23, 59, 78),
(56, 21, 98),
(24, 18, 43),
(34, 15, 67)
)
for row in rows:
ws.append(row)
wb.save('my_changed_file.xlsx')
执行上面的代码后,我期望看到 Excel 表格从第一行开始填充,但表格却从第二行开始填充。
为什么append
方法如此有效?
最佳答案
这并不是 append
的错。每个工作簿在启动时至少有一行和一列。我前段时间遇到过类似的问题:Determine if worksheet is empty in openpyxl 。根据作者(Charlie Clark)的说法,内部计数器 max_row
和 max_column
必须始终严格为正数,因此 append
将始终写入第二个行。
您始终可以在控制索引的循环中设置单元格,这与 append
为方便起见所做的非常相似:
for r, row in enumerate(data, start=1):
for c, value in enumerate(row, start=1):
worksheet.cell(row=r, column=c).value = value
一旦 A1 填满,append
将完全按照您的预期工作。
关于python - 了解 openpyxl 模块中 Worksheet 的追加方法如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56426577/