2016-12-04 101 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可以使用。

相关问题