將Excel的數據導入DataGridView中(轉)
阿新 • • 發佈:2018-04-19
tac xtend sender 數據導入 ron www. exc wro connect
https://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; }
將Excel的數據導入DataGridView中(轉)