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;    

 }

相关文章
相关标签/搜索