2012-04-10 6 views

Antwort

-1

ü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 
3

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

1

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)) 
1

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