2013-04-12 55 views
0

我試着用NPOI創建一個新的Excel文件,它工作正常,閱讀(只)一個Excel文件也可以。然而,現在我想打開一個現有的Excel文件並在其上附加一些行,它會在NPOI.HSSF.UserModel.HSSFWorkbook構造函數的代碼行處崩潰。下面是代碼:無法使用NPOI編輯現有的Excel文件?

using(FileStream fs = new FileStream(myFile, FileMode.Append)){ 
    HSSFWorkbook wb = new HSSFWorkbook(fs); //<-- It is crashed right at here 
    .... 
} 

沒有例外的細節,它只是顯示一個窗口說,應用程序是崩潰,並給予3個選項可供選擇,中間的一個被關閉應用程序:
snapshot
這就是爲什麼我無法理解並且很難解決它的原因。

如果我將FileMode更改爲FileMode.Open,則構造函數可以很好地工作,但這僅僅適用於閱讀。我認爲這是關係到FileAccess的政策一些東西,嘗試這樣做:

using(FileStream fs = new FileStream(myFile, FileMode.Append, FileAccess.ReadWrite)){//<-- However it is crashed right at here 
    HSSFWorkbook wb = new HSSFWorkbook(fs); 
    .... 
} 

我已經嘗試通過打開一個解決方法(只讀)現有的Excel文件,複製1張吧,這表添加到一個新的HSSFWorkbook並將其寫入(只寫)到新的文件流中,但無法這樣做,因爲HSSFWorkbook沒有收集工作表,並且也沒有Add方法,新工作表僅由CreateSheet()方法創建。這很煩人。

你能幫我解決嗎?我正在嘗試NPOI,然後我會嘗試EPPlus。
您的幫助將不勝感激。
謝謝。

+0

什麼是NPOI和EPPlus? –

+1

NPOI是一個非常着名的開源庫,它只支持使用* .xls文件進行處理。雖然EPPlus是另一個非常知名的開源庫,但它僅支持* .xlsx文件。使用這兩個庫來處理* .xls和* .xlsx。你不需要安裝Office,我聽說這些lib對Open SDK和Office Automation有更好的性能,特別是我喜歡EPPlus。寫入速度更快。您應該搜索更多信息,建議您將它們用於與Excel相關的項目,尤其適用於Web應用程序。 –

回答