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

 

 

 

 

转载于:https://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值