2017-08-08 149 views
0

我有一個網站,用戶可以上傳一個xlsx文件。我的應用程序然後讀取內容並執行一些操作。 但是當有些用戶上傳文件時,我的應用程序無法讀取錯誤'外部表格不是預期格式'的內容無法讀取在C#中使用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;';"); 

而且我已經安裝了微軟的AccessDatabaseEngine。

另一件事是,如果我將新保存的文件(Excel 2013)重命名爲* .zip,那麼我可以用rar/explorer打開它,但是如果我嘗試用他的文件(Excel 2007)做同樣的事情,我可以打開它。

編輯:我現在在我的電腦上安裝了Office 2007,所以我同時擁有2007和2013. 然後我做了拉鍊試用,並且使用相同的文件,每次使用2007保存時,我都無法打開winrar,但當我在2013年保存時,它工作正常。我多次使用相同的文件來回執行此操作。同樣的結果。

編輯2:建議並使用EPPlus。同樣的結果。當使用Excel 2013保存工作正常,但當使用Excel 2007

+0

該文件可能不是一個真正的'xlsx'文件,而只是一個包含一個表的HTML文檔,它只是重命名爲'xlsx'? (有些應用程序生成這樣的excel文件 - MS Excel能夠打開這些文件,但試圖用OleDB讀取或使用OpenXML讀取失敗)。也許嘗試使用記事本打開文件,看看它實際上是一個HTML而不是'xlsx'文檔。 – bassfader

+0

試圖用Notepad ++打開它,它都是亂碼,所以非常確定情況並非如此。此外,該文檔具有一些功能,據我所知,它不能保存爲HTML。 – Neophear

+0

[讀取服務器上的Excel文件]的可能重複(https://stackoverflow.com/questions/20157180/reading-excel-file-on-the-server) – krillgar

回答

0

保存後一些谷歌上搜索我來到這是張貼在這裏的回答不工作: Error reading xlsx (2007) file in EPPLUS

看來,有一個錯誤時,該文檔受密碼保護並與Excel 2007一起保存。當我刪除所有保護並再次保存(仍在Excel 2007中)時,它就起作用了。