2012-04-10 110 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 
相關問題