Ich habe versucht, viele Orte zu suchen, aber sehe kein Beispiel Codeausschnitt darüber, wie ein vorhandenes Arbeitsblatt in Excel-Datei mit xlutils oder xlwt löschen mit Python. Wer kann mir bitte helfen?Wie lösche ich ein vorhandenes Arbeitsblatt in Excel-Datei mit xlutils, xlwt, xlrd mit Python
Antwort
über diese Module nicht sicher, aber u kann versuchen win32
from win32com import client
def delete(self, number = 1):
"""
(if the sheet is the first use 1. -1 to use real number)
example: r.delete(1)
"""
sheetnumber = int(number) - 1
ich nur mit diesem behandelt und obwohl dies nicht generell eine gute Codierung ist Wahl, können Sie die interne Arbeitsmappe _worksheets verwenden, um Zugriff auf und setzen die Arbeitsblätter für ein Arbeitsmappenobjekt.
write_book._Workbook__worksheets = [write_book._Workbook__worksheets[0]]
würde dies alles, aber das erste Arbeitsblatt mit einer Arbeitsmappe zugeordnet Streifen
Ich wollte nur bestätigen, dass ich diese Antwort gab David mit zur Arbeit bekam. Hier ist ein Beispiel, wo ich eine Tabelle (Arbeitsmappe) mit mehr als 40 Blättern hatte, die in ihre eigenen Arbeitsmappen aufgeteilt werden musste. Ich kopierte die Master-Arbeitsmappe alle, aber die ein Blatt entnommen und in eine neue Tabelle gespeichert:
from xlrd import open_workbook
from xlutils import copy
workbook = open_workbook(filepath)
# Process each sheet
for sheet in workbook.sheets():
# Make a copy of the master worksheet
new_workbook = copy.copy(workbook)
# for each time we copy the master workbook, remove all sheets except
# for the curren sheet (as defined by sheet.name)
new_workbook._Workbook__worksheets = [ worksheet for worksheet in new_workbook._Workbook__worksheets if worksheet.name == sheet.name ]
# Save the new_workbook based on sheet.name
new_workbook.save('{}_workbook.xls'.format(sheet.name))
Die folgende Methode tut, was Sie brauchen:
def deleteAllSheetBut(workingFolder, xlsxFILE, sheetNumberNotToDelete=1):
import win32com.client as win32
import os
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(os.path.join(workingFolder, xlsxFILE))
for i in range(1, wb.Worksheets.Count):
if i != sheetNumberNotToDelete:
wb.Worksheets(i).Delete()
wb.Save()
excel.DisplayAlerts = True
excel.Application.Quit()
return