您的位置:首页 > 编程语言 > C#

【C#.NET】将excel中的sheet1导入到dataGridView1中 ,或者导入到DataTable,导入到DataSet

2017-01-19 12:38 435 查看
要实现的效果,选择EXECEL文件后,将EXECEL第一个工作簿的数据导入到DATTABLE里或者dataGridView1



//将excel中的sheet1导入到dataGridView1中 ,或者导入到DataTable

        public DataTable ExcelToDataGridView1()

        {            

            OleDbDataAdapter myCommand = null;

            OleDbConnection conn = null;

            DataTable dt = null;

            DataSet ds = new DataSet();             

            try

            {

                System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();//弹出选择对话框

                if (fd.ShowDialog() == DialogResult.OK)//选择了需要导入的文件

                {

                    //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("ExcelFiles/MyExcelFile.xls") + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'"; 

                    //此连接只能操作Excel2007之前(.xls)文件

                    //string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile.MapPath("ExcelFiles/Mydata2007.xlsx") + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; 

                    //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)          

                    //备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。

                    //      "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。                                                                                                                                                                                          
  

                    //获取全部数据  

                    //string exename =fd.FileName.ToString();//选择中的文件路径和文件名

                    this.label1.Text = fd.SafeFileName.ToString();//选择的文件名

                    string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + fd.FileName + ";" + "Extended Properties=Excel 8.0;  ";

                    conn=new OleDbConnection(strConn);

                    conn.Open();

                    DataTable dt2 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获取选中的EXECEL里的所有工作簿

                    int dtname = dt2.Rows.Count-1; //提示dt2,表的第3列就是EXCEL所有工作簿的名字

                    string sheetName =dt2.Rows[dtname][2].ToString().Trim();//获取EXECEL第一个工作簿的名字

                    string strExcel =string.Format("select * from [{0}]", sheetName);

                    myCommand = new OleDbDataAdapter(strExcel, strConn);

                    myCommand.Fill(ds, sheetName);

                    this.dataGridView1.DataSource = ds.Tables[0].DefaultView;                    

                    dt = ds.Tables[0] as DataTable;
                    this.label2.Text = sheetName;

      conn.Close();

                }

            }

            catch (Exception ex)

            {

               MessageBox.Show("导入EXCEL数据异常:"+ex.Message);                

            }

            finally

            {

            

            }

            return dt;

            // 3、需要使用的时候从dataset调用即可。

            //例如得到excel中第i行第0列的数据的语句为:myDs.Tables[0].Rows[i].ItemArray[0].ToString()  注意都是从0开始的。

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: