我是编程的新手。我正在尝试编写一个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()步骤中引用每个工作表的方式有关(因为我没有给任何工作表对象一个明确的名称),但我不知道如何进行。解决这个问题的好方法是什么?
您是否尝试过类似worksheet.write(0, 0, 'Hello')
的操作而不是worksheet.write('A1', 'Hello')
我不确定您的代码到底有什么问题,但是我可以告诉您:
我完全复制了您的代码(除了将路径更改为我的桌面外,它还可以正常工作。
我相信您的问题可能是三件事之一:
XlsxWriter
的越野车/旧版本Workbook.xlsx
的文件,已损坏或引起一些问题(在另一个程序中打开。)考虑到所有这些可能性,我建议您:
重新安装XlsxWriter
:
在命令提示符下运行pip uninstall XlsxWriter
,然后运行pip install XlsxWriter
更改要打开的工作簿的文件名:
workbook = xlsxwriter.Workbook('C:\\Users\\Jabocus\\Desktop\\Workbook2.xlsx')
尝试运行您发布的代码[[精确地,然后逐步添加到它,直到它停止工作。