C#excel数据导入DataGridView第一行数据变成标题处理方法

来源:互联网 发布:董小飒淘宝赚多少钱 编辑:程序博客网 时间:2024/05/01 23:27
首先要添加Microsoft.Office.Interop.Excel  动态库的引用(看你自己现在的版本)



然后添加一个Button按钮  添加一个DataGridView
双击Button生成单击事件 代码如下


定义一个全局的 DataTable
DataTable  dt = new DataTable();

private void button1_Click(object sender, EventArgs e)
        {
            System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
            //打开多个文件true  打开一个文件false
            //ofdLightning.Multiselect = true;
            if (fd.ShowDialog() == DialogResult.OK)
            {
                //把文件的路径保存 并调用bind方法
                string fileName = fd.FileName; bind(fileName);
                
                this.label2.Text = fileName;
            } 
        }

       //读取Excel文件
        private void bind(string fileName) {

            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + 

                 "Data Source=" + fileName + ";" + 

                 "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";
            //读取Excel文件的 sheet1页面
            OleDbDataAdapter da = new OleDbDataAdapter("SELECT *  FROM     [Sheet1$]", strConn); 


            DataSet ds = new DataSet(); 

            try 

            {

                da.Fill(ds, "DATA");
               
                dt = ds.Tables["DATA"];
                //把读取的数据放入dataGridView1中
                this.dataGridView1.DataSource = dt;


            } 

            catch (Exception err) 

            { 

                MessageBox.Show("操作失败!"+err.ToString()); 

            } 
好的  我们先运行下看下效果

报错 为什么呢  sheet1不是一个有效的名称
看前面的代码   OleDbDataAdapter da = new OleDbDataAdapter("SELECT *  FROM     [Sheet1$]", strConn); 
看红色的   我们访问的是sheet1页面
我打开我们访问的Excel文件

我突然豁然开朗 Excel名称不对  我马上修改成sheet1 
我们在运行 看下效果

最起码我们把Excel数据读取到DataGridView中了  
仔细一个发现一个重要的文件
第一行的数据怎么变成标题了
然后我们回到之前的bind方法
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + 

                 "Data Source=" + fileName + ";" + 

                 "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";
HDR=Yes是什么意思?
不懂是什么意思 百度找了下  才知道
HDR=Yes,这代表第一行是标题,不做为数据使用 
如果用HDR=No,则表示第一行不是标题,做为数据来使用
我马上把HDR修改成HDR=No
然后我们在来运行下看下效果

这才是我们想要的结果
当然 标题自己也可以修改 
看自己的需要了



  本人刚毕业   
非常菜鸟
希望写博客   
提高自己的知识
第一次写博客  
希望大家多多支持
多给我提点建议
谢谢

原创粉丝点击