簡體   English   中英

導入 xlsx 文件 uisng NPOI 時出錯,而它適用於 xls

[英]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);
                }
            }

我認為您遇到錯誤的原因可能有兩個:

  1. 您嘗試訪問的文件已打開。 您應該從所有編輯器中關閉文件,然后重試。
  2. 我正在使用的NPOI版本是2.3.0。 您可能正在使用舊版本。

我建議您丟棄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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM