为什么openpyxl创建名称为“ Sheet1”的工作表?

时间:2019-05-27 05:56:11

标签: python office365 openpyxl

openpyxl默认情况下创建名称为“ Sheet1”的电子表格 即使我指定应使用索引0创建工作表。 我确定这不是重复的问题。 文档说openpyxl支持2010 MS Office版本,但我使用的是office365 pro。 您能提供任何帮助或建议吗?

请注意,独立代码对我来说很好用,但是当同一代码与其他代码集成在一起时,我会遇到以下问题。 我已经尝试了很多东西。因为我是Python的新手,所以似乎有些我不知道的东西。 如果我指定索引1,则会创建两个工作表:一个工作表名为Sheet,另一个工作表为我提供的名称。如果我提供索引0,则只会创建一个名称为Sheet1的工作表。

下面的代码应在索引0处创建名为test的工作表。

            for r in range(3, rowcount + 1):
                for c in range(1, columncount + 1):
                    final_path = first_part + str(r) + second_part + str(c) + third_part
                    table_data = self.driver.find_element_by_xpath(final_path).text

                    fname = r"{}_{}.xlsx".format(str(i[1]), str(i[2]))
                    if (os.path.exists(fname)):
                        workbook = openpyxl.load_workbook(fname)
                        worksheet = workbook[fname]
                    else:
                        workbook = Workbook()
                        worksheet= workbook.create_sheet(fname,0)
                        #worksheet = workbook.active
                        #worksheet.title = fname
                    worksheet.cell(row=r,column=c).value = table_data
                    workbook.save(fname)

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式删除此工作表:

from openpyxl import Workbook

workbook = Workbook()
del workbook['Sheet']

答案 1 :(得分:0)

openpyxl会在您首次调用Workbook()函数时创建一个名为“ Sheet”的工作表。这只是该模块的一种令人讨厌的怪癖。我发现处理它的最干净的方法是重命名该工作表,而不是尝试制作一个新的工作表。

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "My sheet name"
wb.save("Test.xlsx")

将使用名为“我的工作表名称”的单个工作表创建一个xlsx文件。 当您用索引0调用create_sheet时,只需在原始表之前插入一个新表。

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "My sheet name"
ws2 = wb.create_sheet("Another Name", 0)
wb.save("Test.xlsx")

将创建一个xlsx,其中第一个工作表称为“另一个名称”,第二个工作表称为“我的工作表名称”。如果您要处理一张工作簿,则最简单的方法是使用title