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

时间:2017-08-08 10:46:35

标签: c# excel oledb

我有一个网站,用户可以上传xlsx文件。然后我的应用程序读取内容并执行一些操作。 但是当某些用户上传文件时,我的应用程序无法读取内容,并显示错误“外部表格不符合预期格式”

其中一个用户正在使用Excel 2007.奇怪的是,如果我使用Excel 2013打开他的文件并保存它而不更改任何内容,它可以正常工作。

这是oledb connectionstring:

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

我已经安装了Microsofts AccessDatabaseEngine。

另一件事是,如果我将新保存的文件(Excel 2013)重命名为* .zip,那么我可以使用rar / explorer打开它,但如果我尝试对他的文件执行相同操作(Excel 2007)我可以'打开它。

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

Edit2:建议并使用EPPlus。结果相同。使用Excel 2013保存时工作正常,但使用Excel 2007保存时不起作用。

1 个答案:

答案 0 :(得分:0)

经过一些谷歌搜索后,我发现了这里发布的答案: Error reading xlsx (2007) file in EPPLUS

当文档受密码保护并使用Excel 2007保存时,似乎出现错误。当我删除所有保护并再次保存(仍在Excel 2007中)时,它可以正常工作。