C# 读取Excel并解析

时间:2020-09-14 19:15:08   收藏:0   阅读:16
        public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName="")
        {
            //SheetName = "Sheet1$";
            //HDR=Yes, 表示第一行为列名第二行才是数据 / HDR=No, 第一行就是数据;      
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties=‘Excel 12.0; HDR=YES; IMEX=1‘"; 
            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                DataSet ds = new DataSet();
                //如果想要按列过滤的话 eg: "SELECT * FROM [{0}] where [列名] is not null", 和sql有点类似
                OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}] where [设备编号] is not null", SheetName), conn); 
                odda.Fill(ds, SheetName);

                return ds.Tables[0];
            }
        }

  运行程序时,可能报 "未在本地计算机上注册“microsoft.ACE.oledb.12.0"的错误,解决方案如下.

  1、安装数据访问组件:

  1)适用于office2007的

  Microsoft Access Database Engine 2007 Office system 驱动程序:数据连接组件
  https://download.csdn.net/download/willingtolove/12584343  (亲测没问题!xls和xlsx格式都可以成功读取!)

  2)适用于office2010的

  Microsoft Access Database Engine 2010 Redistributable
  https://www.microsoft.com/zh-CN/download/details.aspx?id=13255 (亲测没问题!注意x64还是x86!)
   2、如何是在web项目中执行进行转化, 在IIS应用程序池中,设置“”启用兼容32位应用程序”;
   IIS双击应用程序池->双击相关部署的项目->点击高级设置->启动32位应用程序 选择true
技术图片

 

 就大功告成啦!

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!