• 将Excel的数据导入DataGridView中[原创]


    作者:lhxhappy

    连接:http://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html

    转载请注明出处~!

     /// <summary>
            
    /// 点击按钮导入数据
            
    /// 作者:lhxhappy
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                
    //打开一个文件选择框
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title 
    = "Excel文件";
                ofd.FileName 
    = "";
                ofd.InitialDirectory 
    = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录
                ofd.Filter = "Excel文件(*.xls)|*.xls";
                ofd.ValidateNames 
    = true;     //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名
                ofd.CheckFileExists = true;  //验证路径有效性
                ofd.CheckPathExists = true//验证文件有效性


                
    string strName = string.Empty;
                
    if (ofd.ShowDialog() == DialogResult.OK)
                {
                    strName 
    = ofd.FileName;
                }

                
    if (strName == "")
                {
                    MessageBox.Show(
    "没有选择Excel文件!无法进行数据导入");
                    
    return;
                }
                
    //调用导入数据方法
                EcxelToDataGridView(strName, this.hpGridView1);
            }

    Excel数据导入方法

     /// <summary>
            
    /// Excel数据导入方法
            
    /// 作者:lhxhappy
            
    /// </summary>
            
    /// <param name="filePath"></param>
            
    /// <param name="dgv"></param>
            public void EcxelToDataGridView(string filePath,DataGridView dgv)
            {
                
    //根据路径打开一个Excel文件并将数据填充到DataSet中
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                
    string strExcel = "";
                OleDbDataAdapter myCommand 
    = null;
                DataSet ds 
    = null;
                strExcel 
    = "select  * from   [sheet1$]";
                myCommand 
    = new OleDbDataAdapter(strExcel, strConn);
                ds 
    = new DataSet();
                myCommand.Fill(ds, 
    "table1");

                
    //根据DataGridView的列构造一个新的DataTable
                DataTable tb = new DataTable();
                
    foreach (DataGridViewColumn dgvc in dgv.Columns)
                {
                    
    if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
                    {
                        DataColumn dc 
    = new DataColumn();
                        dc.ColumnName 
    = dgvc.DataPropertyName;
                        
    //dc.DataType = dgvc.ValueType;//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable
                        tb.Columns.Add(dc);
                    }
                }

                
    //根据Excel的行逐一对上面构造的DataTable的列进行赋值
                foreach (DataRow excelRow in ds.Tables[0].Rows)
                {
                    
    int i = 0;
                    DataRow dr 
    = tb.NewRow();
                    
    foreach (DataColumn dc in tb.Columns)
                    {
                        dr[dc] 
    = excelRow[i];
                        i
    ++;
                    }
                    tb.Rows.Add(dr);
                }
                
    //在DataGridView中显示导入的数据
                dgv.DataSource = tb;
            }
  • 相关阅读:
    记录学生的日常
    el表达式与jstl的用法
    学习心得——袁康凯
    学习心得——刘文瑞
    学习心得——高婕
    学习心得——张坤鹏
    Mysql中文乱码 小强斋
    面试题>字符串匹配 小强斋
    选秀节目打分 小强斋
    面试题>字符串匹配 小强斋
  • 原文地址:https://www.cnblogs.com/lhxhappy/p/1341873.html
Copyright © 2020-2023  润新知