gpt4 book ai didi

c# - 当用户取消文件覆盖时出现 Excel COMException 0x800A03EC

转载 作者:行者123 更新时间:2023-11-30 15:47:38 24 4
gpt4 key购买 nike

我有代码将 excel 文件保存到特定位置和用户无法更改的文件名。当文件不存在并静默保存时,它工作正常。如果该文件已经存在并且用户选择覆盖它,那么它也可以正常工作。当它已经存在并且用户取消保存时会出现问题。这会导致抛出 COMException 0x800A03EC。有什么想法吗?

引用资料:Microsoft Excel 12.0 对象库

excelWorkbook.SaveAs(resultsFilePath, XlFileFormat.xlExcel8);

最佳答案

将它放在一个 Try/Catch block 中,就像您应该处理任何可能失败的代码一样?如果它在 try/catch block 中,那么根据您提供给我们的信息,设计在定义上是有缺陷的,因为......

  1. ExcelWorkbook.Save() 函数是您无法更改的。就是这样……
  2. 失败是因为用户取消了保存,而您调用 SaveAs 方法时没有先检查文件是否存在,如果 Excel 提示用户给他们取消的机会,唯一的选择就是这个错误,那么唯一的选择就是不给用户那个选择。

作为一般性建议,我会说您应该检查文件是否存在,并让用户有机会在您的代码中取消。如果他们取消,问题就避免了。如果他们选择不取消,只需在调用 Excel Save() 函数之前删除文件即可。

或者,您可以使用 SaveAs()函数而不是 Save(),并将名为 ConflictResolution 的可选参数设置为 XlSaveConflictResolution.xlLocalSessionChanges

(以防万一你问,我知道处理来自 C# 的可选参数很痛苦,所以查看 this previous question 了解如何处理这些......)

关于c# - 当用户取消文件覆盖时出现 Excel COMException 0x800A03EC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com