C#使用NPOI操作Excel錯誤解決
阿新 • • 發佈:2019-01-08
問題:未能載入檔案或程式集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf116
解決方案:
1:發現沒有引用此dll,在專案的package資料夾下SharpZipLib.0.86.0資料夾中找到SharpZipLib.dll引用,即OK。
2:引用版本不對。
問題:System.ObjectDisposedException: 無法訪問已關閉的檔案。(順便附上原始碼)
/// <summary>
/// 匯出資料到Excel中
/// </summary>
/// <param name="Url">檔案匯出地址</param>
public void Export(string Url, List<Word> list)
{
try
{
//建立Excel檔案的物件
IWorkbook book;
string fileExt = Path.GetExtension(Url).ToLower();
if (fileExt == ".xlsx")
{
book = new XSSFWorkbook();
}
else if (fileExt == ".xls")
{
book = new HSSFWorkbook();
}
else
{
book = null;
}
if (book == null)
{
return;
}
//新增一個sheet
ISheet sheetWords = book.CreateSheet("Words");
//給sheet新增第一行的頭部標題
IRow rowWords = sheetWords.CreateRow(0);
rowWords.CreateCell(0).SetCellValue("序號");
rowWords.CreateCell(1).SetCellValue("詞條");
rowWords.CreateCell(2).SetCellValue("詞性詞義");
//將資料逐步寫入sheet各個行
for (int i = 0, k = 0; i < list.Count - 1; i++, k++)
{
IRow rowtemps = sheetWords.CreateRow(k + 1);
rowtemps.CreateCell(0).SetCellValue(k + 1);
rowtemps.CreateCell(1).SetCellValue(list[i + 1].WordEntry);
rowtemps.CreateCell(2).SetCellValue(list[i + 1].WordProperty + list[i + 1].Meaning);
}
// 寫入到檔案
FileStream fs = new FileStream(Url, FileMode.Create);
book.Write(fs);
fs.Seek(0, SeekOrigin.Begin);
fs.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message.ToString()+"\t"+ex.ToString());
}
}
解決方法:註釋了fs.Seek(0, SeekOrigin.Begin);就可了!