python - 了解 openpyxl 模块中 Worksheet 的追加方法如何工作

标签 python openpyxl

这是一些代码:

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_rowmax_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/

相关文章:

python - 无法让 Counter() 在 python 中工作

python - 使用waf,如何在配置期间检查python模块的最低版本?

python - 使用 anaconda3 python 3.5 安装 Tensorflow 得到 'Read timed out error"

python - openpyxl 创建一个引用另一个工作表中的单元格的函数

python - 加载工作簿时列出与样式相关的 Openpyxl 中超出范围的索引

python - 使用 openpyxl 排序和自动过滤 Excel

python - 在 Python 中,如果在递归调用后未使用变量,递归函数中变量的内存是否会被释放?

python - 在 Pygame 中确定拱形射弹与另一个 Sprite 的碰撞

excel - 迭代特定列中的所有行 openpyxl

python - 循环 python openpyxl。如何在单元格中添加循环