[英]Error while importing xlsx file uisng NPOI while it works for xls
我正在嘗試導入一個 excel 文件 (xlsx),但它引發了以下問題:
無法加載文件或程序集“ICSharpCode.SharpZipLib,版本=0.86.0.518,Culture=neutral,PublicKeyToken=1b03e6acf1164f73”或其依賴項之一。 該系統找不到指定的文件。
但是對於具有相同代碼的 xls 來說它工作得很好。
using (FileStream file = new FileStream(filename, FileMode.Open,
FileAccess.Read))
{
FileExtension = Path.GetExtension(filename);
if
(FileExtension.ToLower().Equals(StringConstants.FILE_EXTENSION_XLS))
{
HSSFWorkBook = new HSSFWorkbook(file);
intCountSheets = HSSFWorkBook.NumberOfSheets;
EaRepos = DiagFunAnaClass.EaRepos;
objPackage = DiagFunAnaClass.objPackage;
plantCode = DiagFunAnaClass.plantCode;
buttonValidate.Enabled = true;
}
else if
(FileExtension.ToLower().Equals(StringConstants.FILE_EXTENSION_XLSX))
{
XSSFWorkBook = new XSSFWorkbook(file);
錯誤出現在上述代碼的最后一行。
我嘗試下面的代碼,它不會引發任何異常:
string filename = @"D:\test.xlsx";
using (FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
string FileExtension = Path.GetExtension(filename);
if (FileExtension.ToLower().Equals(".xls"))
{
var HSSFWorkBook = new HSSFWorkbook(file);
int CountSheets = HSSFWorkBook.NumberOfSheets;
}
else if (FileExtension.ToLower().Equals(".xlsx"))
{
var XSSFWorkBook = new XSSFWorkbook(file);
}
}
我認為您遇到錯誤的原因可能有兩個:
我建議您丟棄NPOI,而改用EPPlus。 我浪費了3天的時間用NPOI自動化一些excel創建,只是發現要添加一個列,我必須手動移動每個單元格並管理NPOI返回空對象的空單元格。
用EPPlus編寫的代碼小10倍,簡單20倍。
注意:我不以任何方式隸屬於EPPlus,只是我個人的經驗
您的代碼似乎正確,我也嘗試了Manprit的代碼。 在我的2.2.1版本中它可以正常工作。 有時即使您按照文檔進行操作,NPOI功能也無法正常工作。 最后,我建議您嘗試使用以下流類型來強制轉換XSSF的文件流類型
var XSSFWorkBook = new XSSFWorkbook((Stream)file);
FileStream派生自Stream類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.