使用 Python 将列表写入 Excel 中的单元格

Write a list to a cell in Excel using Python

我想写一个列表列表:k = [['1','a'],['2','b'],['3','c']] - 到 Python excel sheet.

中的一个单元格

我的代码:

workbook = xlsxwriter.Workbook('names.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Generic Name')

我试过: worksheet.write_row('B1', allmajor) 这导致列表 k 的内容被写入单独的单元格(B1、C1、D1..)。

执行:worksheet.write('B1', ','.join(k)) 导致单元格 B1 的内容具有类似 - '1','a','2','b','3','c'

的字符串

有什么方法可以将列表写入单元格,使单元格 B1 看起来像 [['1','a'],['2','b'],['3','c']]? Python 中是否有任何其他模块可以促进此操作?

您可以通过将列表的列表转换为字符串来解决这个问题。例如

>>import pandas as pd
>>list1=[['1','a'],['2','b'],['3','c']]
>>list2=[['4','a'],['5','b'],['6','c']]
>>df=pd.DataFrame({'a':[str(list1), str(list2)]]})

现在,当您以逗号分隔格式保存它时,每个元素都将被视为一个字符串。当您从文件中读回此内容时,您可以使用 ast 将其转换回列表列表。

>>import ast
>>[ast.literal_eval(i) for i in df['a']]

希望这能回答您的问题。

您可以使用内置函数 repr,它给出列表对象的字符串表示形式:

worksheet.write('B1', repr(k))

在 python 提示符下您可以看到它是如何工作的:

>>> k = [['1','a'],['2','b'],['3','c']]
>>> k
[['1', 'a'], ['2', 'b'], ['3', 'c']]
>>> repr(k)
"[['1', 'a'], ['2', 'b'], ['3', 'c']]"
>>> print(repr(k))
[['1', 'a'], ['2', 'b'], ['3', 'c']]

对于简单的列表结构,您可以像 str(k) 一样将其转换为字符串,但对于这种情况,repr 可能更好。