将Excel导入DataGridView

public static bool getExcel(DataGridView dgv,System.Windows.Forms.Label lbl)
        {
            bool fflag = true;

            OpenFileDialog open = new OpenFileDialog();
            open.Title = "请选择要导入的Excel文件";
            open.Filter = "Excel文件(*.xls)|*.xls";
            if(open.ShowDialog()==DialogResult.OK)
            {
                string fileName = open.FileName;
                //根据路径打开一个Excel文件并将数据填充到DataSet中
                string strconn = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" + fileName+";Extended Properties=\"Excel 8.0;HDR=YEs;IMEX=1\"" ;
                //导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
              OleDbConnection conn = new OleDbConnection(strconn);
                conn.Open();
                string strExcel = "select * from [sheet1$]";
                OleDbDataAdapter comm = new OleDbDataAdapter(strExcel, conn);
                DataSet ds =new DataSet();
                try
                {
                    comm.Fill(ds, "table1");
                }
                catch
                {
                    MessageBox.Show("错误信息:009", "错误");
                }
                
                int c = ds.Tables[0].Rows.Count;
                string s = ds.Tables[0].Rows[0][0].ToString();
            

               

                // 根据DataGridView的列构造一个新的Datatable
                System.Data.DataTable dt = new System.Data.DataTable();
                foreach(DataGridViewColumn dgvc in dgv.Columns)
                {
                    if(dgvc.Visible)
                    {
                        DataColumn dc = new DataColumn();
                        dc.ColumnName = dgvc.DataPropertyName;
                        dt.Columns.Add(dc);

                       
                    }
                }
                int r = dt.Rows.Count;
                int f = dt.Columns.Count;

                //根据Excel的行逐一对上面构造的DataTable的列进行赋值
                foreach(DataRow excelrow in ds.Tables[0].Rows)//遍历Excel中的行
                {
                    int i = 0;
                    DataRow dr = dt.NewRow();
                    foreach(DataColumn dc in dt.Columns)//DataGridView中的列
                    {
                        dr[dc] = excelrow[i];
                        i++;
                    }
                    dt.Rows.Add(dr);
                }
              
               

               
                //导入到DataGridView
                    dgv.DataSource = dt;

                    lbl.Text = dgv.RowCount.ToString();
               
            }
            else
            {
                fflag = false;
            }
            return fflag;
               
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值