我想使用Openpyxl将值列表添加到单个Excel单元格中,但它返回以下错误

hzbexzde  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(98)

我得到的错误 ValueError:无法将[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]转换为Excel**
我想将 ls 中的数据添加到 ws1.cell(1,1),但当我尝试使用上述代码添加时,它返回错误。我还记得,当我的代码在python 2.7和旧版本的openpyxl上运行时,我可以使用相同的方法将值列表添加到单个单元格中。
这是我的代码

from openpyxl import load_workbook, Workbook
wb1 = Workbook()
ws1 = wb1.create_sheet(index=None, title="2020")
ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]
ws1.cell(1,1).value=ls```

**In more details error is:**

ValueError                                Traceback (most recent call last)
Cell In[1025], line 2
      1 ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]
----> 2 ws1.cell(1,1).value=ls

File ~\AppData\Local\anaconda3\lib\site-packages\openpyxl\cell\cell.py:215, in Cell.value(self, value)
    212 @value.setter
    213 def value(self, value):
    214     """Set the value and infer type and display options."""
--> 215     self._bind_value(value)

File ~\AppData\Local\anaconda3\lib\site-packages\openpyxl\cell\cell.py:184, in Cell._bind_value(self, value)
    181     dt = get_type(t, value)
    183 if dt is None and value is not None:
--> 184     raise ValueError("Cannot convert {0!r} to Excel".format(value))
    186 if dt:
    187     self.data_type = dt

ValueError: Cannot convert [0, 8.017587061595629, 6.476105944459858, 14.247103467749781, 18.55773218714581, 32.68428298499151, 19.87675167486509] to Excel
qv7cva1a

qv7cva1a1#

我猜您希望将值写入Excel的每一列。
尝试更换线路

ws1.cell(1,1).value=ls

ws1.append(ls)

这能解决你的问题吗?

emeijp43

emeijp432#

答案仍然是一样的,你不能把一个列表写到一个单元格。你可以附加一个列表,比如@traceurSaimn的答案。这将把列表添加到列A中最后一个使用的列表之后的下一行。但这似乎不是你想要的描述。
如果你想把所有的列表写到一个单元格中,那么它需要是一个字符串。

from openpyxl import load_workbook, Workbook
wb1 = Workbook()
ws1 = wb1.create_sheet(index=None, title="2020")
ls=[0,8.017587061595629,6.476105944459858,14.247103467749781,18.55773218714581,32.68428298499151,19.87675167486509]
s = ','.join(str(x) for x in ls)
ws1.cell(1,1).value=s

wb1.save('foo.xlsx')

如果你想添加列表,这样每个元素都被输入到一个单独的单元格中,而不是作为最后一行追加,而是指定列表元素被输入的单元格,你需要循环列表,并通过递增列来指定坐标来写入每个值。

相关问题