无法在 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),它成功了。
我有一个网站,用户可以将 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),它成功了。