2013-06-03 41 views
2

我使用visual studio 2008在c#上創建控制檯應用程序。用代碼覆蓋excel文件

應用程序「讀取」一個excel文件97-2003(.XLS)。

我使用噴氣讀取文件:

OleDbConnection oConn = new OleDbConnection(); 
    oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + file_path + " ;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";";  

但運行的程序,我得到錯誤,當「外部表不是預期的格式。」

我曾嘗試閱讀的Excel與NPOI庫文件,我得到了錯誤:

消息=「無效頭標識;閱讀0x0010000000060809,預計0xE11AB1A1E011CFD0」

所以,它就像該文件是無效某種方式。

如果通過Windows打開Office Excel上的excel文件,然後用相同和相同的擴展名.xls覆蓋它,然後運行控制檯應用程序,然後應用程序運行正常,沒有錯誤。

所以,我想這樣做是:用C#代碼,打開文件並保存,並覆蓋它,這樣應用程序可以成功讀取文件。

我想我可以打開這樣的文件:

File.OpenWrite(file_path); 

但我怎麼能覆蓋該文件?

+0

你從哪裏得到的源文件?是否有可能它不是一個真正有效的Excel「xls」文件,而是其他一些帶有「xls」擴展名的文件格式? –

+0

excel文件由另一個程序生成,所以它生成爲excel文件。 – pyram

+0

不要按這一點,但你確定嗎?如果您查看內容,許多Web應用程序(例如)將生成「xls」文件,這些文件不過是HTML表格。 Excel可以打開它們,但其他應用程序可能會阻塞該格式。 –

回答

1

就我所見,您不需要打開並重寫它。您的連接字符串錯誤。你不會說任何地方它是一個Excel文件,所以默認情況下它正在尋找一個Access數據庫(而不是找到一個)。

試試這個:

Provider=Microsoft.Jet.OLEDB.4.0; data source="YourFileName.xls"; Extended Properties=Excel 8.0; 

對於其他類型的連接,見ConnectionStrings

+0

是的我說的是一個excel文件。我剛剛編輯了我的問題。但我得到了同樣的錯誤。 正如你所看到的,我也試圖用另一個庫,NPOI庫打開excel文件,但它又失敗了。 – pyram