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;
        }



第二种方法:用第三方组件:NPOI组件,推荐使用此方法

先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用。

NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。

使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。

NPOI采用的是Apache 2.0许可证(poi也是采用这个许可证),这意味着它可以被用于任何商业或非商业项目,你不用担心因为使用它而必须开放你自己的源代码,所以它对于很多从事业务系统开发的公司来说绝对是很不错的选择。

当然作为一个开源许可证,肯定也是有一些义务的,例如如果你在系统中使用NPOI,你必须保留NPOI中的所有声明信息。对于源代码的任何修改,必须做出明确的标识。


 //config中配置的上传的Excel路径
        static object basePath = ConfigurationManager.AppSettings["FilePath"];
        #region 读取Excel文件
        /// <summary>
        /// 读取Excel文件到table中
        /// </summary>
        /// <param name="filePath">excel文件路径</param>
        /// <returns></returns>
        public static DataTable ReadExcel(string fileName)
        {
            DataTable dt = new DataTable();
            string filePath = "";
            if (basePath != null)
            {
                filePath = HostingEnvironment.MapPath((basePath.ToString() + fileName));
                dt = ImportExcelFile(filePath);
            }
            //文件是否存在
            if (System.IO.File.Exists(filePath))
            {

            }
            return dt;
        }
        public static DataTable ImportExcelFile(string filePath)
        {
            HSSFWorkbook hssfworkbook;
            #region//初始化信息
            try
            {
                using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    hssfworkbook = new HSSFWorkbook(file);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            #endregion

            NPOI.SS.UserModel.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(Convert.ToChar(((int)‘A‘) + j).ToString());
                //将第一列作为列表头
                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;
        }
        #endregion    

asp.net读取Excel文件的两种方法,NPOI方法,布布扣,bubuko.com

asp.net读取Excel文件的两种方法,NPOI方法

上一篇:Linux | 目录结构及重要文件


下一篇:利用shell 脚本实现二进制安装 LAMP 架构的 word press