![是否有一种编程方式可以判断 Excel 表是否已损坏?](https://linux22.com/image/1570938/%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A7%8D%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E5%8F%AF%E4%BB%A5%E5%88%A4%E6%96%AD%20Excel%20%E8%A1%A8%E6%98%AF%E5%90%A6%E5%B7%B2%E6%8D%9F%E5%9D%8F%EF%BC%9F.png)
我们有一张旧的、相当大的 Excel 表。它每天都会保存多次,而且似乎每周都会损坏一次。
环境:
每个人都使用 x64 版本的 Office
它使用多个插件,包括彭博和内部插件
它使用多个 RTD,包括彭博和内部 RTD
我们正在使用最新版本的 Office 和 Excel
Win7 和 Win10 机器的混合(也是 x64)。
是否有一种编程方式可以让我们判断已保存的 Excel 表是否损坏,而无需加载它并手动检查它是否正常工作?
大多数情况下,当它损坏时,它根本无法打开,或者当您执行类似操作时它会崩溃CRTL-F
。
我们每天会保存工作表多次,如果可以的话,我们希望验证每次保存。
答案1
我个人建议编写一个 powershell 脚本。
以下是如何打开桌面上所有电子表格的基本示例。
如果文件正常/可打开,脚本将输出电子表格上第一张表的名称。
如果文件损坏/无法打开,powershell 将抛出异常。
这可以轻松扩展以在表中提供文件的名称和状态。
$user = $env:USERNAME
$Location = "c:\users\$user\desktop\"
$ExcelFiles = Get-ChildItem -Path $Location -Filter *.xls*
Foreach ($ExcelFile in $ExcelFiles){
$Excel = New-Object -ComObject Excel.Application
$Workbook = $Excel.Workbooks.Open($ExcelFile.FullName)
$workSheet = $Workbook.Sheets.Item(1)
$WorkSheet.Name
}
话虽如此,检查电子表格本身的问题也是一个好主意。
我注意到导致大型电子表格出现问题的是整个电子表格中的大量自定义格式(不同的字体、彩色文本等)。
如果需要的话,是否值得考虑启动一个新的电子表格并在另一个电子表格中协作两者的信息?
希望这可以帮助。