asp.net 讀取excel文件的一些方法,NPOI方法

第一種:傳統方法,採用OleDB讀取EXCEL文件,服務器

優勢,寫法簡單,老式。缺點 :服務器必須有安裝此組建,並且版本必須兼容,不然讀取報錯,不推薦使用。多線程

  • private DataSet GetConnect_DataSet2(string fileName)  
  •       {  
  •           DataSet myDataSet = new DataSet();  
  •           //建立一個數據連接  
  •           string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + ";Extended Properties=Excel 8.0";  
  •           OleDbConnection myConn = new OleDbConnection(strCon);  
  •           string strCom = " SELECT * FROM [Sheet1$] ";  
  •           //try  
  •           //{  
  •           myConn.Open();  
  •           //打開數據連接,獲得一個數據集  
  •           OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);  
  •           //建立一個 DataSet對象  
  •           myDataSet = new DataSet();  
  •           //獲得本身的DataSet對象  
  •           myCommand.Fill(myDataSet, "CodeTable");  
  •           //關閉此數據連接  
  •           myConn.Close();  
  •           //}  
  •           //catch (Exception ex)  
  •           //{  
  •   
  •           //}  
  •           return myDataSet;  
  •       }  

 

第二種:經過引用的com組件:Microsoft.Office.Interop.Excel.dll讀取Excel文件ide

開啓一個Excel進程,逐行逐cell的處理excel文檔,大數據

缺點:數據量大時比較慢,並且影響很明顯,及時開啓多線程也不理想,大數據慎用。網站

使用完後須要kill掉excel進程。this

 

第三種:NPOIspa

先去官網:http://npoi.codeplex.com/下載須要引入dll(能夠選擇.net2.0或者.net4.0的dll),而後在網站中添加引用。.net

 

NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。線程

使用 NPOI 你就能夠在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。excel

 

NPOI採用的是Apache 2.0許可證(poi也是採用這個許可證),這意味着它能夠被用於任何商業或非商業項目,你不用擔憂由於使用它而必須開放你本身的源代碼,因此它對於不少從事業務系統開發的公司來講絕對是很不錯的選擇。

固然做爲一個開源許可證,確定也是有一些義務的,例如若是你在系統中使用NPOI,你必須保留NPOI中的全部聲明信息。對於源代碼的任何修改,必須作出明確的標識。

 

 

    /// <summary>     

/// 讀取Excel文件到table中     

/// </summary>     

/// <param name="filePath">excel文件路徑</param>     

/// <returns></returns>     

private DataTable ReadExcel(string fileName)    

{        

       DataTable dt = new DataTable();        

       string filePath = this.Server.MapPath("/Temp/" + fileName);

       dt = ImportExcelFile(filePath);

 

        //文件是否存在         

        if (System.IO.File.Exists(filePath))        

       {

 

        }        

        return dt;    

}

 

    private DataTable ImportExcelFile(string filePath)    

   {        

          HSSFWorkbook hssfworkbook;       

         try        

        {            

                using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))            

               {                

                        hssfworkbook = new HSSFWorkbook(file);           

               }        

         }        

         catch (Exception e)        

         {            

                throw e;     

          }

 

          ISheet sheet = hssfworkbook.GetSheetAt(0);        

          System.Collections.IEnumerator rows = sheet.GetRowEnumerator();       

          DataTable dt = new DataTable();      

          rows.MoveNext();        

          HSSFRow row = (HSSFRow)rows.Current;     

          for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)       

         {          

                //將第一列做爲列表頭         

                dt.Columns.Add(row.GetCell(j).ToString());        

          }        

          while (rows.MoveNext())       

          {            

                 row = (HSSFRow)rows.Current;        

                 DataRow dr = dt.NewRow();           

                 for (int i = 0; i < row.LastCellNum; i++)       

                 {               

                        NPOI.SS.UserModel.ICell cell = row.GetCell(i);        

                       if (cell == null)           

                       {                 

                              dr[i] = null;          

                       }               

                       else             

                       {                 

                               dr[i] = cell.ToString();     

                       }          

               }           

              dt.Rows.Add(dr);       

       }        

       return dt;    

 }

相關文章
相關標籤/搜索