当前位置: 首页 > 知识库问答 >
问题:

Python openpyxl将列表写入Excel错误

元修然
2023-03-14

我是新的Python和工作在我的第一个项目。我试图让我的代码从一个电子表格中复制数据列,并将其附加到当前存在于主表中的数据中。我能够捕获每个工作表中的数据,并创建一个新的主列表,该列表结合了两个数据集,但我很难将其写入文件。当我测试打印组合列表时,它们看起来是正确的,但是当我添加代码将列表写入文件时,它会挂起。

你能提供的任何帮助都会非常有用!

下面是我的代码。这是我得到的错误

Traceback(最近一次调用最后一次): File"/Path/Path/Path/ExpltData.py",第50行,在德斯特斯heet.cell(row=rowNum,列=1). value=master List1

文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site packages/openpyxl/cell/cell.py”,第313行,在value self中_绑定_值(值)

文件/库/框架/Python.framework/Versions/3.4/lib/python3.4/site-packages/openpyxl/cell/cell.py,第217行,_bind_value引发ValueError("不能将{0}转换为Excel"。格式(值))

无法转换['再保险公司','市场1','市场2','市场3','市场4','市场5','市场1','市场2','市场3','市场4','市场5',['市场1','市场2','市场3','Market 4','Market 5']]转Excel

import openpyxl

#Open source data file
sourceFile = openpyxl.load_workbook('/Path/Path/Path/testAuth.xlsx')
sourceSheet = sourceFile.get_sheet_by_name('Sheet1')

#read data from source file and create lists of new data
newList1 = []
newList2 = []
newList3 = []

for row in range(2, sourceSheet.get_highest_row()):
    data1 = sourceSheet['A' + str(row)].value
    newList1.append(data1)
    data2 = sourceSheet['B' + str(row)].value
    newList2.append(data2)
    data3 = sourceSheet['C' + str(row)].value
    newList3.append(data3)

#open destination workbook that includes the master database
destFile = openpyxl.load_workbook('/Path/Path/Path/testHist.xlsx')
destSheet = destFile.get_sheet_by_name('Sheet1')

#create empty lists for copying the historical data already in the workbook
masterList1 = []
masterList2 = []
masterList3 = []

#grab master spreadsheet data and write to list
for row in range(1, destSheet.get_highest_row()+1):
    masterData1 = destSheet['A'+ str(row)].value
    masterList1.append(masterData1)
    masterData2 = destSheet['B'+ str(row)].value
    masterList2.append(masterData2)
    masterData3 = destSheet['C'+ str(row)].value
    masterList3.append(masterData3)

#append new data to the history list
masterList1.append(newList1)
masterList2.append(newList2)
masterList3.append(newList3)

#write new master list to a new file
for rowNum in range(2, len(masterList1)):
    destSheet.cell(row=rowNum, column=1).value = masterList1

destSheet.save("updatedTest.xlsx")

共有2个答案

贺景山
2023-03-14

您是否尝试过使用extend而不是appendappend将单个项添加到列表的末尾,而extend接受列表参数并添加每个项。

袁子瑜
2023-03-14

不是将每个单元格的值分配给master List1,您可能打算使用master List1[rowNum]作为值:

for rowNum in range(2, len(masterList1)):
    destSheet.cell(row=rowNum, column=1).value = masterList1[rowNum]

另外,正如@mgrant指出的,您应该在前面扩展(而不是追加)主列表:

masterList1.extend(newList1)
 类似资料:
  • 本文向大家介绍Python将列表数据写入文件(txt, csv,excel),包括了Python将列表数据写入文件(txt, csv,excel)的使用技巧和注意事项,需要的朋友参考一下 写入txt文件 写入csv文件 写入excel文件 以上所述是小编给大家介绍的Python将列表数据写入文件(txt, csv,excel)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回

  • 问题内容: 我正在尝试使用以下脚本创建一个包含Python中字符串列表内容的csv文件。但是,当我检查输出文件时,发现每个字符都用逗号分隔。如何指示定界列表中的每个字符串而不是每个字符? 我检查了PEP 305,找不到任何特定的东西。 问题答案: 该方法以iterable作为参数。您的结果集必须是列表(列)的列表(行)。 将 行 参数写入编写者的文件对象,并根据当前方言格式化。 执行以下任一操作:

  • 我正在编写一个程序,它将数据写入excel表格的表格格式。我的代码提供了我想要的所有细节。 但是为了得到表格格式,我必须在excel sheet中遵循以下步骤 我想让我的代码自动生成我想要的格式,而不需要我在excel表中执行上面显示的步骤。有人能帮我吗?提前道谢。下面显示的是我的代码。 `

  • 我是Python新手。我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt、XlsXcessive、openpyxl)。其他人建议写信给一家公司。csv文件(从未使用过csv,也不了解它是什么)。 程序非常简单。我有两个列表(float)和三个变量(string)。我不知道这两个列表的长度,它们可能不会是相同的长度。 我希望布局如下图: 粉红色列将具有第一个列表的

  • 问题内容: 我有5个长度相同的列表,我想将它们写到CSV的5列中。到目前为止,我只能使用以下代码将一个代码写入一列: 如果我添加另一个循环,它只会将该列表写入同一列。有人知道获得五个单独列的好方法吗? 问题答案: 将它们更改为行 然后就

  • 我有5个相同长度的列表,我想把它们写在CSV的5列中。到目前为止,我只能用以下代码在一列中写一个: 如果我为循环添加另一个