【问题标题】:How can I iterate through Excel Worksheets that aren't explicitly named using XlsxWriter?如何遍历未使用 XlsxWriter 明确命名的 Excel 工作表?
【发布时间】:2020-03-10 05:55:41
【问题描述】:

在编程方面,我完全是个新手。我正在尝试编写一个 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 的方式有关(因为我没有提供任何 Worksheet 对象一个明确的名称),但我不知道如何进行。有什么好的方法可以解决这个问题?

【问题讨论】:

    标签: python excel csv xlsxwriter worksheet


    【解决方案1】:

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

    我完全复制了您的代码(除了将路径更改为我的桌面)并且运行良好。

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

    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. 尝试完全运行您发布的代码,然后逐步添加,直到它停止工作。

    【讨论】:

    • 感谢您花时间看这个。至少,我的思维过程已经足够好了,这让我松了一口气。
    • @Jacobus 所以你能弄明白吗?
    • 不,我实际上是想扩展最初的评论,但是当我按下回车键进入新行时,该评论已发布。在过去的 10 分钟里,我试图编辑我的评论,但更改并没有花费 T~T。短处是 3. 是正确的:我的示例代码不是我要修复的代码。它应该是类似的。我将听取您的建议并尝试构建我的工作示例代码。
    • 好的,很高兴它有帮助。
    【解决方案2】:

    你尝试过类似worksheet.write(0, 0, 'Hello') 而不是worksheet.write('A1', 'Hello')

    【讨论】:

    • 是的,我已经在我正在使用的 XlsxWriter 测试文件上完成了它,但我不认为我正在使用的坐标语法是问题的一部分。
    猜你喜欢
    • 2020-03-12
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 2020-02-12
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多