2012-04-10 240 views

回答

-1

不知道这些模块但你可以尝试的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

我刚刚处理了这一点,虽然这不是一般的好编码的选择,你可以使用内部工作簿 _worksheets访问和设置工作簿对象的工作表。

write_book._Workbook__worksheets = [write_book._Workbook__worksheets[0]] 

这会剥夺一切,但有一个工作簿

1

我只是想确认我得到这个使用大卫答曰工作相关联的第一个工作表。这里有一个例子,我有一个电子表格(工作簿),其中有40多张需要拆分为他们自己的工作簿。我复制了主工作簿中删除所有,但一个表,并保存到一个新的电子表格:

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

下面的方法做了你需要的东西:

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 
相关问题