如何直接在openpyxl中追加单元格值

How to append cell values in openpyxl directly

我正在尝试使用 openpyxl 直接附加值来附加单元格值。

这个有效:

wb1=load_workbook('test.xlsx')
ws1=wb1.active

testlist=('two','three','four','five')

for i in testlist:
    ws1['A1'].value = ws1['A1'].value +(' ') + i

print(ws1['A1'].value)

A1 的值为“一”,循环运行后为“一二三四五”

但是可以直接在单元格值上使用append方法吗?

for i in testlist:
        ws1.append['A1'].value = i

但是这会引发错误 “类型错误:'method' 对象不支持项目分配”

您需要将元组移动到字符串中,然后可以像这样将其添加到单元格 A1

wb1=Workbook()
ws1=wb1.active

testlist=('one','two','three','four','five')
myString = ' '.join(map(str, testlist))
myString.strip()
ws1['A1'].value = myString

wb1.save('test1.xlsx')

错误“方法对象不可订阅”意味着,您将对象视为 python dictdict 类对象,而对象不是。因为append方法returnsNone.
根据 openpyxl 的文档,您可以 worksheet.append 通过:

  1. 一个列表:所有值从第一列开始按顺序添加。 这是你的情况。只需执行以下操作即可:
wb1=Workbook()
ws1=wb1.active

testlist=('one','two','three','four','five')

# append each element side by side in a single row
ws1.append(testlist)

# To append each element vertical direction in new row you can un-comment next 2 lines.

#for entry in testlist:
#    ws1.append([entry])


wb1.save('test.xlsx')
  1. A dict: 值被分配给由键(数字或字母)指示的列。如果您定位到特定列,这可能会有所帮助。


要获得更多控制,只需使用 worksheet.cell.