使用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
可以使用。