无法在 C# 中使用 OLEDB 读取 xlsx 文件

Can't read xlsx file using OLEDB in C#

我有一个网站,用户可以将 xlsx 文件上传到该网站。然后我的应用程序读取内容并做一些事情。 但是,当某些用户上传文件时,我的应用程序无法读取内容并出现错误 'External table is not in the expected format'

其中一个用户正在使用 Excel 2007。奇怪的是,如果我用我的 Excel 2013 打开他的文件并在不做任何更改的情况下保存它,它工作正常。

这是 oledb 连接字符串:

OleDbConnection oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;
        Data Source=" + filepath + @";
        Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';");

而且我已经安装了微软的AccessDatabaseEngine。

另一件事是,如果我将新保存的文件 (Excel 2013) 重命名为 *.zip 然后我可以用 rar/explorer 打开它,但如果我尝试用他的做同样的事情文件 (Excel 2007) 我打不开它。

编辑:我现在在我的电脑上安装了 Office 2007,所以我同时拥有 2007 和 2013。 然后我进行了 zip 试用,并且使用相同的文件,每次我用 2007 保存时,我都无法用 winrar 打开,但是当我用 2013 保存时它工作正常。我用同一个文件来回做了多次。相同的结果。

Edit2:按照建议进行并改为使用 EPPlus。同样的结果。用 Excel 2013 保存时工作正常,但用 Excel 2007 保存时不起作用。

经过更多谷歌搜索后,我找到了张贴在这里的答案: Error reading xlsx (2007) file in EPPLUS

文件用Excel 2007保存密码保护时出现错误。当我取消所有保护并再次保存时(仍然在Excel 2007),它成功了。