【C#】C#读取Excel中的数据

来源:互联网 发布:csgo cpu优化 编辑:程序博客网 时间:2024/04/30 03:18

先贴代码:

private void btnStart_Click(object sender, EventArgs e)        {            if (txtPath.Text != "")            {                string conStr = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + txtPath.Text + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";                using (OleDbConnection con = new OleDbConnection(conStr))                {                    string str1 = "select * from [全部电脑类资产$] where [ERP资产编号] is not null";                    try                    {                        con.Open();                    }                    catch (Exception ex)                    {                        throw new Exception("连接Excel出错:" + ex.Message);                    }                    using (OleDbDataAdapter da = new OleDbDataAdapter(str1, con))                    {                        DataTable dt = new DataTable();                                                da.Fill(dt);                        //removeEmpty(dt);                        dataGridView1.DataMember = "[全部电脑类资产$]";                        dataGridView1.DataSource = dt;                    }                }            }            else            {                MessageHelper.WRONG("请先选择导入文件");                          }        }


说明:

1.连接字符串中的:Microsoft.Ace.OleDb.12.0。既可以连接xls文件又可以连接xlsx文件,不建议使用Microsoft.Jet.OLEDB.4.0了,这个只能连接xls的excel.

 

2.连接字符串中的txtPath.Text就是你的excel文件的路径名,如:C:\Users\Jim\Desktop\2016.2.24.xlsx。其中的HDR=YES,是声明Excel表中的第一行是列名而不是数据,HDR=NO,则相反。

 

3.如果读取到的Excel中有空白行数据,就用sql语句中的is notnull过滤掉。如:

select * from [全部电脑类资产$] where [ERP资产编号] isnot null。


或者采用如下方法,移除DataTable中的空白行

  private void removeEmpty(DataTable dt)        {            List<DataRow> removelist = new List<DataRow>();            for (int i = 0; i < dt.Rows.Count; i++)            {                bool rowdataisnull = true;                for (int j = 0; j < dt.Columns.Count; j++)                {                    if (!string.IsNullOrEmpty(dt.Rows[i][j].ToString().Trim()))                    {                        rowdataisnull = false;                    }                }                if (rowdataisnull)                {                    removelist.Add(dt.Rows[i]);                }            }            for (int i = 0; i < removelist.Count; i++)            {                dt.Rows.Remove(removelist[i]);            }        }


4.由于Microsoft.Ace.OleDb.12.0与Microsoft.Jet.OLEDB.4.0都不支持64位系统,所以如果出现“xxxxxx未注册”之类的问题,请将项目配置为x86平台。如果不想配置,则下载Microsoft.Ace.OleDb.12.0的64位驱动,点击下载。



By Jim







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 跟老婆吵架闹的要离婚该怎么办 充了q币没有到账怎么办 9个月宝宝吃了盐怎么办 红米4x开不了机怎么办 鱼身上有红斑像出血了怎么办 草鱼身上有红斑像出血了怎么办 宝宝屁眼红的破皮了怎么办 孩子身上起红疙瘩很痒怎么办 久而不射,但软了怎么办 盆底综合肌力1级怎么办 头发掉的厉害怎么办吃什么好 给蜂蛰了肿了痒怎么办 小米手环2没电了怎么办 小米手环2不亮了怎么办 红米3s无限重启怎么办 乐视手机1s卡顿怎么办 老公出轨了怎么办你会选择离婚吗 c盘和d盘换换了怎么办 晚上2点到3点醒怎么办 红米3s变砖了怎么办 6s锁屏密码忘了怎么办 怀孕9个月了胃疼怎么办 怀孕6个月了胃疼怎么办 孕妇胃疼怎么办4个月了 25岁欠了5万块钱怎么办 感冒嗓子疼怎么办最简单的方法 和老婆离婚了我的心好痛怎么办 4s店不给退定金怎么办 教你闪腰了后该怎么办 coolpad酷派手机开不了机怎么办 苹果5s黑屏开不了机怎么办 苹果4s的屏坏了怎么办 苹果6手机充电口接触不良怎么办 5s用久了卡顿怎么办 孕妇血糖高怎么办什么方法降最好 脚砸了肿了紫了怎么办 我想在淘宝上卖东西该怎么办 苹果手机4s开不了机怎么办 冒险岛s前出2条怎么办 狗狗又吐又拉血怎么办 小孩上网成瘾怎么办父母要怎么做