使用python限制excel文件中的工作表数量

我需要使用python将excel文件中的工作表数量限制为特定的数字。 一旦该工作簿中的工作表数量达到特定数量,用户就无法添加新的工作表。

我找不到任何使用xlsxwriter , openpyxl或xlrd的解决scheme

有没有使用其他软件包的选项?

Excel没有内置此类function。 只能通过保护工作簿或使用立即反转操作的VBA处理程序来禁止创build新工作表 。

保护工作簿还会禁用其他工作表操作,例如移动,重命名和隐藏/ 取消隐藏,这些操作可能并不合意。

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中禁用macros,这将不起作用。

要有macros,工作簿必须保存为.xlsm ,否则Excel在打开时会出现错误。

请参阅使用VBAmacros – XlsxWriter关于Python实现的文档 。 openpyxl不能使用macros,只能保留它们 ,而xlrd看起来像被devise为只读取而不是编辑 。 或者,总是有Excel自己的COM接口, pywin32可以使用。