2016-12-04 29 views
1

我需要使用python將excel文件中的工作表數量限制爲特定數量。一旦該工作簿中的工作表數量達到特定數量,用戶就無法添加新的工作表。使用python限制excel文件中的工作表數量

我找不到使用任何解決方案xlsxwriteropenpyxlxlrd

是否有使用其他一些封裝的任何選項?

+2

請問excel是否支持此功能? – Dekel

+0

我不知道它是否有任何這樣的功能,因爲行和列可以被限制,我認爲這也會有一個選項..我不知道這個 – Jithin

+1

首先 - 檢查如果Excel支持它(我'我真的不確定)。如果確實如此 - 接下來要看看是否有任何庫實現了它。如果沒有 - 是時候實施並將其交還給開源社區:) – Dekel

回答

1

Excel沒有內置此功能。You can only disallow creating new sheets by protecting the workbook or with a VBA handler that reverses the operation immediately

保護工作簿also disables other worksheet operations,如移動,重命名和隱藏/取消隱藏,這可能會或可能不需要。

OTOH,VBA的處理器可以比鏈路上的一個更智能:

Private Sub Workbook_NewSheet(ByVal Sh As Object) 
    If ThisWorkbook.Worksheets.Count > <Maximum> Then 
     With Application 
      .ScreenUpdating = False 
      .DisplayAlerts = False 
      Sh.Delete 
      .DisplayAlerts = True 
      .ScreenUpdating = True 
     End With 
    End If 
End Sub 

當然,這不會有任何影響,如果一個編輯與第三方軟件包,沒有文件運行VBA,或者在Excel中禁用宏。

要有宏,工作簿必須保存爲.xlsm,否則Excel在打開時會出現錯誤。

請參閱Working with VBA Macros — XlsxWriter Documentation關於Python的實現。 openpyxl cannot work with macros, only preserve them at mostxlrd looks like being designed to only read rather than edit。或者,總是有Excel自己的COM接口pywin32可以使用。

相關問題