EPPlus检查文件是否为Excel文件的方法

7

我正在使用C#中的EPPlus库来读取一个Excel(.xlsx)文件。初始化操作如下:

var package = new ExcelPackage(new FileInfo(filename));

这个方法可以成功实现,但是否有办法检查指定的 filenamepackage 是否是有效的 .xlsx 文件呢?否则在处理非 Excel 对象时就会出现异常,例如用户意外打开了一个 .zip 文件等。

1个回答

5

您可以检查文件的扩展名:

string file = @"C:\Users\Robert\Documents\Test.txt";

string extenstion = Path.GetExtension(file);

更新

在EPPlus文档中,我没有找到与某些文件无法打开相应的返回值,但是您可以使用以下代码捕获异常:

FileInfo fileInfo = new FileInfo(pathToYourFile);

ExcelPackage package = null;
try
{
    package = new ExcelPackage(fileInfo);
}
catch(Exception exception)
{
   ...
}

如果你没有进入catch代码块,那意味着它已经正确打开了。

2
是的,但这并不能以二进制方式检测文件是否为Excel文件,对吧? - Robert Strauch
1
@Robert - 你不能在你的电脑上测试一下吗? - MikroDel
@Robert - 或者你认为二进制文件没有扩展名吗?) - MikroDel
1
当然,二进制文件可以有扩展名。我的意思是...例如:如果任何非Excel文件(例如ZIP文件)被重命名为.xlsx,则仅检查扩展名将无济于事。相反,该文件当然无法被处理。 - Robert Strauch
1
@Robert - 对的 - 如果有人重命名它,它将无法工作...但我也会寻找这个问题的解决方案 - 并在这里发布我的反馈。 - MikroDel
1
当然,我可以捕获异常。有时候解决方案太明显了;-) - Robert Strauch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接