如何遍历未使用XlsxWriter明确命名的Excel工作表?

问题描述 投票:0回答:2

我是编程的新手。我正在尝试编写一个Python 3程序,它将根据CSV文件的内容生成一个Excel工作簿。到目前为止,我了解如何创建工作簿,并且能够基于CSV文件的内容动态创建工作表,但是在写入每个单独的工作表时遇到了麻烦。

[注意,在下面的示例中,我提供了一个静态列表,但是我的程序根据CSV文件的内容动态创建了一个名称列表:将添加到列表中的名称数量从1到60,具体取决于所用的检测方法。

import xlsxwriter

workbook = xlsxwriter.Workbook('C:\\Users\\Jabocus\\Desktop\\Workbook.xlsx')
list = ["a", "b", "c", "d"]

for x in list:
    worksheet = workbook.add_worksheet(x)
    worksheet.write("A1", "Hello!")

workbook.close()

如果运行上面显示的程序,则会收到SyntaxError,并且IPython指向workbook.close()作为问题的根源。

但是,如果我排除尝试写“ Hello!”的行,到每个工作表中的单元格A1,程序将按预期运行:我最终在桌面上看到Workbook.xlsx,它有4个工作表,分别为a,b,c和d。

for循环在我看来是一个不错的选择,因为我的程序将需要处理多种CSV格式(我宁愿编写一个程序来处理实验室中每个测定的数据,而不是编写每个测定的程序) 。

我希望通过以这种方式使用worksheet.write(),Python会知道我想写到刚刚创建的工作表中(即,我认为工作表将在每个工作表中充当每个工作表的名称。尽管显式地为每个工作表都命名了新的循环)。

感觉这里的迭代是问题,我知道这与我尝试在write()步骤中引用每个工作表的方式有关(因为我没有给任何工作表对象一个明确的名称),但我不知道如何进行。解决这个问题的好方法是什么?

python excel csv xlsxwriter worksheet
2个回答
0
投票

您是否尝试过类似worksheet.write(0, 0, 'Hello')的操作而不是worksheet.write('A1', 'Hello')


0
投票

我不确定您的代码到底有什么问题,但是我可以告诉您:

我完全复制了您的代码(除了将路径更改为我的桌面外,它还可以正常工作。

我相信您的问题可能是三件事之一:

  1. 您有XlsxWriter的越野车/旧版本
  2. 您的桌面上已经有一个名为Workbook.xlsx的文件,已损坏或引起一些问题(在另一个程序中打开。)
  3. 除了您发布的代码以外,您还有其他代码。

考虑到所有这些可能性,我建议您:

  1. 重新安装XlsxWriter

    在命令提示符下运行pip uninstall XlsxWriter,然后运行pip install XlsxWriter

  2. 更改要打开的工作簿的文件名:

    workbook = xlsxwriter.Workbook('C:\\Users\\Jabocus\\Desktop\\Workbook2.xlsx')

  3. 尝试运行您发布的代码[[精确地,然后逐步添加到它,直到它停止工作。

© www.soinside.com 2019 - 2024. All rights reserved.