【问题标题】:Adding a sheet to an existing excel worksheet without deleting other sheet将工作表添加到现有 Excel 工作表而不删除其他工作表
【发布时间】:2016-06-28 16:32:37
【问题描述】:

我正在尝试将工作表添加到 excel 文件:ex.xls 并且每当我这样做时都会删除所有以前制作的工作表。

如何在不删除其他工作表的情况下向此 Excel 文件添加工作表?

这是我创建工作表的代码:

import xlwt
import xlrd

wb = Workbook()
Sheet1 = wb.add_sheet('Sheet1')
wb.save('ex.xls')

【问题讨论】:

  • 我认为你不能这样做Sheet2 = wb.add_sheet('Sheet2')
  • 我可以,但这只会创建两个新工作表,同时删除所有其他工作表
  • 这是因为您正在创建一个新工作簿(一个新的 excel 文件),添加一个工作表,然后覆盖您现有的 excel 文件。我知道这并不能解决您的问题 Bernie 这样做了,但我想您可能会喜欢解释为什么会失败。

标签: excel python-2.7 csv xlrd xlwt


【解决方案1】:

我相信这是做你想做的事的唯一方法:

import xlrd, xlwt
from xlutils.copy import copy as xl_copy

# open existing workbook
rb = xlrd.open_workbook('ex.xls', formatting_info=True)
# make a copy of it
wb = xl_copy(rb)
# add sheet to workbook with existing sheets
Sheet1 = wb.add_sheet('Sheet1')
wb.save('ex.xls')

【讨论】:

  • 干杯,伙计。很高兴能为您提供帮助。
  • 如果您不介意将自己视为唯一真正了解这些内容的人:stackoverflow.com/questions/38063661/…
  • 如何在按名称引用它们的同时将所有内容从 Excel 工作表的第一张表复制到第五张表
  • 也许可以为此创建一个新问题。
  • 要记住的一点是,xlrd 仅用于读取现有的 excel 文件,而 xlwt 仅用于写入。这就是为什么正如伯尼所展示的那样,您需要实用程序在它们之间架起桥梁。在这里您可以看到正在打开现有文件,将数据复制到新工作簿中,然后添加新工作表并最终覆盖现有的 excel 文件。
【解决方案2】:

下面是使用“openpyxl”在 excel 工作簿中创建一个新工作表。

import openpyxl

wb=openpyxl.load_workbook("Example_Excel.xlsx")
wb.create_sheet("Sheet1")  

如果工作表或工作簿尚不存在,则会出现错误,以避免发生这种情况

import openpyxl

wb=openpyxl.load_workbook("Example_Excel.xlsx")
try:
    wb["Sheet1"]
except:
    wb.create_sheet("Sheet1") 

下面是一个将信息写入多个页面的示例,具体取决于您要如何使用它

import openpyxl

work_book = 'Example_Excel.xlsx'
sheets = "Sheet1","Sheet2","Sheet3","Sheet4","Sheet5"

for current_sheet in sheets:
    wb=openpyxl.load_workbook(work_book)

    #if the sheet doesn't exist, create a new sheet
    try:
      wb[current_sheet]
    except:
      wb.create_sheet(current_sheet) 

    #wait for user to press "Enter" before starting on next sheet
    raw_input("Press Enter to continue...")

#The code for you wish repeated for each page
    #This example will print the sheet name to "B2" cell on that sheet
    cell ="B"+str(2)
    sheet=wb[current_sheet]
    sheet[cell].value= current_sheet

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多