openpyxl 如何在工作表中写入列表数据?

Gua*_*gWu 5 python openpyxl

我正在使用openpyxl处理一些科学数据,当我将列表数据写入excel文件时,我遇到了问题。

wb = openpyxl.Workbook(optimized_write=Ture)
ws_write = wb.create_sheet(0)

for i in range(row):
   ws_write.append([datalist[i][0]])

wb.save(filename='data.xlsx')
Run Code Online (Sandbox Code Playgroud)

完成后,似乎只能将列表写入 xlsx 文件的第一列。如何将数据列表的相同列分配给同一张表中 xlsx 文件的相同列?有没有控制输出的参考?

Cha*_*ark 7

使用时,ws.append(row)您必须将整个过程作为序列或生成器插入。我不明白你的数据结构,但像下面这样的东西应该可以工作。

for row in datalist:
    ws.append(row)
Run Code Online (Sandbox Code Playgroud)

如果这还不够,请提供有关数据结构的更多信息。


Ala*_*ver 4

您只写入数据的第一列 (col=0)。为了包含所有数据,请添加一个内部循环:

for i in range(row):
    for j in range(col):
       ws_write.append([datalist[i][j]])
wb.save(filename='data.xlsx')
Run Code Online (Sandbox Code Playgroud)

或者,一次写入整行:

for i in range(row):
   ws_write.append([datalist[i]])
wb.save(filename='data.xlsx')
Run Code Online (Sandbox Code Playgroud)

我不知道那个包可以确保输出语法是正确的。

编辑:看了这个:Insert row into Excel Spreadsheet using openpyxl in Python后 ,您似乎需要执行以下操作:

for i in range(row):
    for j in range(col):
       ws_cell(row=i,col=j).value = datalist[i][j]
wb.save(filename='data.xlsx')
Run Code Online (Sandbox Code Playgroud)