如何通过Python创建多个excel表?

How to create multiple excel sheets through Python?

我有一个在 for 循环中运行的优化问题。我希望将每次新迭代的结果保存在同一工作簿的不同选项卡中。

这就是我正在做的。我得到了多个工作簿,而不是在同一个工作簿中给我多个选项卡。

from openpyxl import Workbook
wb1 = Workbook()
for i in range(n):
    ws = wb1.active()
    ws.title = str(i)

    #code on formatting sheet, optimization problem

    wb1.save('outfile'+str(i)+'.xlsx')

每次迭代您都获取相同的工作表 - ws = wb1.active() - 然后只需将结果保存到不同的工作簿。

您只需在每次迭代时创建一个 new sheet。像这样:

from openpyxl import Workbook
wb1 = Workbook()
for i in range(n):
    ws = wb1.create_sheet("run " + str(i))

    #code on formatting sheet, optimization problem

wb1.save('outfile.xlsx')

请注意,save 被缩进以便在所有工作表都格式化后简单地保存文件。没有必要在每次迭代时保存。保存操作可能需要一些时间,尤其是在添加更多选项卡时。

此代码将创建 Excel 个工作簿,其中包含与作为输入的文本文件中的字符串数相同的工作表。这里我有一个名为 'sample.txt' 的文本文件,有 3 个字符串。此代码将在名为 'reformatted.data.xls' 的工作簿中创建 3 个工作表。

我还删除了创建工作簿对象时自动创建的默认工作表。

import xlwt

from openpyxl import Workbook

wb1 = Workbook()

row = 0

f = open('C:\Desktop\Mytestcases\sample.txt')

lines = f.readlines()

for i in range(len(lines)):

  ws = wb1.create_sheet("worksheet" + str(i))

  ws.cell(row=1, column=1).value = lines[i]

  row += 1

sheet = wb1.get_sheet_by_name('Sheet')

wb1.remove_sheet(sheet)

wb1.save('reformatted.data.xls')