为什么 openpyxl 使用名称 "Sheet1" 创建工作表?
why openpyxl creating worksheet with name"Sheet1"?
openpyxl
默认创建名称为 "Sheet1" 的传播 sheet
即使我指定 sheet 应该使用索引 0 创建。
我确定这不是一个重复的问题。
文档说 openpyxl
支持 2010 MS Office 版本,但我使用的是 office365 pro。
您能提供任何帮助或建议吗?
请注意,独立代码对我来说工作正常,但当将相同代码与其他代码集成时,我遇到了下述问题。
我尝试了很多东西。由于我是 Python 的新手,看来有些事情我不知道。
如果我指定索引 1,则会创建两个作品 sheet:一个名称为 Sheet
,另一个名称为我提供的。如果我提供索引 0,则只会创建一个名为 Sheet1
的 Sheet。
下面的代码应该在索引 0 处创建工作 sheet,名称为 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)
当您第一次调用 Workbook()
函数时,openpyxl
创建一个名为 "Sheet" 的单个 sheet。这只是模块的一种烦人的怪癖。我发现处理它的最干净的方法是重命名 sheet 而不是尝试创建一个新的
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "My sheet name"
wb.save("Test.xlsx")
将创建一个 xlsx 文件,其中包含一个名为 "My sheet name" 的作品sheet。
当您使用索引 0 调用 create_sheet
时,您只需在原始 sheet 之前插入一个新的 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,其中第一个 sheet 称为 "Another name",第二个 sheet 称为 "My sheet name"。如果您要处理一个 sheet 工作簿,最简单的方法是使用 title
.
您可以获得 sheet 并像这样删除 :
sheet = wb1.get_sheet_by_name('Sheet')
wb1.remove_sheet(sheet)
您可以通过以下方式删除此 sheet:
from openpyxl import Workbook
workbook = Workbook()
del workbook['Sheet']
openpyxl
默认创建名称为 "Sheet1" 的传播 sheet
即使我指定 sheet 应该使用索引 0 创建。
我确定这不是一个重复的问题。
文档说 openpyxl
支持 2010 MS Office 版本,但我使用的是 office365 pro。
您能提供任何帮助或建议吗?
请注意,独立代码对我来说工作正常,但当将相同代码与其他代码集成时,我遇到了下述问题。
我尝试了很多东西。由于我是 Python 的新手,看来有些事情我不知道。
如果我指定索引 1,则会创建两个作品 sheet:一个名称为 Sheet
,另一个名称为我提供的。如果我提供索引 0,则只会创建一个名为 Sheet1
的 Sheet。
下面的代码应该在索引 0 处创建工作 sheet,名称为 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)
Workbook()
函数时,openpyxl
创建一个名为 "Sheet" 的单个 sheet。这只是模块的一种烦人的怪癖。我发现处理它的最干净的方法是重命名 sheet 而不是尝试创建一个新的
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "My sheet name"
wb.save("Test.xlsx")
将创建一个 xlsx 文件,其中包含一个名为 "My sheet name" 的作品sheet。
当您使用索引 0 调用 create_sheet
时,您只需在原始 sheet 之前插入一个新的 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,其中第一个 sheet 称为 "Another name",第二个 sheet 称为 "My sheet name"。如果您要处理一个 sheet 工作簿,最简单的方法是使用 title
.
您可以获得 sheet 并像这样删除 :
sheet = wb1.get_sheet_by_name('Sheet')
wb1.remove_sheet(sheet)
您可以通过以下方式删除此 sheet:
from openpyxl import Workbook
workbook = Workbook()
del workbook['Sheet']