gpt4 book ai didi

c# - 如何验证文件是否为有效的 Excel 电子表格?

转载 作者:太空狗 更新时间:2023-10-29 22:27:53 26 4
gpt4 key购买 nike

我已经在 SO 和 this 上进行了一些搜索, this , this还有更多,但没有任何线索,所以我将不得不问问你们。

我正在尝试通过 Interop 打开 Excel 文件,并且我安装了 Office 2007,所以我使用的是 Microsoft.Office.Interop.Excel 版本 14.0 .

当我尝试打开一个有效的 xls 文件时,一切运行正常。

但如果我尝试通过 Interop 打开一个无效文件(如位图或可执行文件),Excel 会打开它而不会出现提示或警告。

如何检测 Excel 是否加载了无效的工作簿文件,而不用警告阻止?

我正在尝试为我的 Excel 对象阅读器编写单元测试。其中一种情况是尝试打开无效文件。

一些代码来帮助:应用程序创建:

    _app = new Application()
{
Visible = false,
DisplayAlerts = false, // <-- I don't want to remove this.
AskToUpdateLinks = false,
};

工作簿打开:

   _workbooks.Open(filename);
_workbook = _workbooks.get_Item(1); // 1-based.
_worksheets = _workbook.Sheets;

编辑:只需添加 1 个信息:Excel 加载无效文件。如果 DisplayAlerts 设置为 true,它会提示(打开一个对话框)通知工作簿似乎已损坏,但如果 DisplayAlerts 设置为 false,它加载文件就像下面:

Excel Loads Invalid File

最佳答案

我刚刚结束使用另一种方法:Excel 工作簿有一个名为 FileFormat 的属性。当 Excel 打开无效文件时,它会将文件格式设置为文本的枚举器值之一:

    XlFileFormat.xlTextMac
XlFileFormat.xlTextMSDOS
XlFileFormat.xlTextPrinter
XlFileFormat.xlTextWindows

在此枚举中,Excel 具有有效 文件(对我而言有效):

    XlFileFormat.xlExcel12
XlFileFormat.xlExcel7
XlFileFormat.xlExcel8
XlFileFormat.xlExcel9795

所以我结束了使用一个简单的“or”来过滤我想要导入的文件类型:

    bool validFile = ( f == XlFileFormat.xlExcel12   ) 
|| ( f == XlFileFormat.xlExcel7 )
|| ( f == XlFileFormat.xlExcel8 )
|| ( f == XlFileFormat.xlExcel9795 );

现在可以了。感谢你们的帮助,你们让我朝着正确的方向前进。

关于c# - 如何验证文件是否为有效的 Excel 电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8901819/

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