Abh*_*ngh 2 python office365 openpyxl
openpyxl默认情况下,即使我指定应使用索引 0 创建工作表,也会创建名称为“Sheet1”的电子表格。我确信这不是一个重复的问题。文档说openpyxl支持2010 MS Office版本,但我使用的是office365 pro。您能提供任何帮助或建议吗?
请注意,独立代码对我来说工作得很好,但是当相同的代码与其他代码集成时,我遇到了下面描述的问题。我已经尝试了很多事情。由于我是 Python 新手,看起来有些东西我不知道。如果我指定索引 1,则会创建两张工作表:一张带有名称Sheet,另一张带有我提供的名称。如果我提供索引 0,则只会Sheet1创建一张具有名称的工作表。
下面的代码应在索引 0 处创建名为 name 的工作表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)
Run Code Online (Sandbox Code Playgroud)
    openpyxl当您第一次调用该函数时,会创建一个名为“Sheet”的工作表Workbook()。这只是模块的一种恼人的怪癖。我发现处理它的最干净的方法就是重命名该工作表,而不是尝试创建一个新工作表
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "My sheet name"
wb.save("Test.xlsx")
Run Code Online (Sandbox Code Playgroud)
将创建一个 xlsx 文件,其中包含一个名为“我的工作表名称”的工作表。当您create_sheet使用索引 0 进行调用时,只需在原始工作表之前插入一个新工作表即可。
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")
Run Code Online (Sandbox Code Playgroud)
将创建一个 xlsx,其中第一个工作表称为“另一个名称”,第二个工作表称为“我的工作表名称”。如果您正在处理一张工作簿,最简单的方法是使用title.