如何遍历未使用 XlsxWriter 明确命名的 Excel 个工作表?
How can I iterate through Excel Worksheets that aren't explicitly named using XlsxWriter?
在编程方面我完全是个新手。我正在尝试编写一个 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 的行,程序 运行s 正如我所期望的那样:我最终得到 Workbook.xlsx 在我的桌面上,它有 4 个名为 a、b、c 和 d 的工作表。
for 循环对我来说似乎是一个不错的选择,因为我的程序将需要处理各种 CSV 格式(我宁愿编写一个程序来处理来自我实验室每个化验的数据,也不愿编写一个用于每次测定)。
我希望通过像我那样使用 worksheet.write(),Python 会知道我想写入刚创建的工作表(即我认为工作表会在循环的每次迭代期间充当每个工作表的名称,尽管明确地为每个工作表命名为新的名称)。
感觉迭代是这里的问题,我知道这与我在 write() 步骤中尝试引用每个工作表的方式有关(因为我没有给出任何Worksheet objects an explicit name),但我不知道如何继续。有什么好的方法可以解决这个问题?
你有没有试过 worksheet.write(0, 0, 'Hello')
而不是 worksheet.write('A1', 'Hello')
我不确定你的代码到底出了什么问题,但我可以告诉你:
我完全复制了您的代码(除了将路径更改为我的桌面)并且运行良好。
我认为您的问题可能是以下三种情况之一:
- 您有一个 buggy/old 版本的
XlsxWriter
- 您的桌面上有一个名为
Workbook.xlsx
的文件已经损坏或导致一些问题(在另一个程序中打开。)
- 您有一些不同于您发布的代码。
考虑到所有这些可能性,我建议您:
重新安装 XlsxWriter
:
在命令提示符中 运行 pip uninstall XlsxWriter
后跟 pip install XlsxWriter
更改您正在打开的工作簿的文件名:
workbook = xlsxwriter.Workbook('C:\Users\Jabocus\Desktop\Workbook2.xlsx')
尝试运行完全发布您发布的代码,然后逐渐添加到它,直到它停止工作。
在编程方面我完全是个新手。我正在尝试编写一个 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 的行,程序 运行s 正如我所期望的那样:我最终得到 Workbook.xlsx 在我的桌面上,它有 4 个名为 a、b、c 和 d 的工作表。
for 循环对我来说似乎是一个不错的选择,因为我的程序将需要处理各种 CSV 格式(我宁愿编写一个程序来处理来自我实验室每个化验的数据,也不愿编写一个用于每次测定)。
我希望通过像我那样使用 worksheet.write(),Python 会知道我想写入刚创建的工作表(即我认为工作表会在循环的每次迭代期间充当每个工作表的名称,尽管明确地为每个工作表命名为新的名称)。
感觉迭代是这里的问题,我知道这与我在 write() 步骤中尝试引用每个工作表的方式有关(因为我没有给出任何Worksheet objects an explicit name),但我不知道如何继续。有什么好的方法可以解决这个问题?
你有没有试过 worksheet.write(0, 0, 'Hello')
而不是 worksheet.write('A1', 'Hello')
我不确定你的代码到底出了什么问题,但我可以告诉你:
我完全复制了您的代码(除了将路径更改为我的桌面)并且运行良好。
我认为您的问题可能是以下三种情况之一:
- 您有一个 buggy/old 版本的
XlsxWriter
- 您的桌面上有一个名为
Workbook.xlsx
的文件已经损坏或导致一些问题(在另一个程序中打开。) - 您有一些不同于您发布的代码。
考虑到所有这些可能性,我建议您:
重新安装
XlsxWriter
:在命令提示符中 运行
pip uninstall XlsxWriter
后跟pip install XlsxWriter
更改您正在打开的工作簿的文件名:
workbook = xlsxwriter.Workbook('C:\Users\Jabocus\Desktop\Workbook2.xlsx')
尝试运行完全发布您发布的代码,然后逐渐添加到它,直到它停止工作。