將Excel 文件導入到dataGridView中ide
1 /// Excel數據導入DataGridView 2 public void EcxelToDataGridView(string filePath, DataGridView dgv) 3 { 4 //根據路徑打開一個Excel文件並將數據填充到DataSet中 5 //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//HDR=YES 有兩個值:YES/NO,表示第一行是否字段名,默認是YES,第一行是字段名 6 7 string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'"; 8 9 OleDbConnection conn = new OleDbConnection(strConn); 10 conn.Open(); 11 string strExcel = ""; 12 OleDbDataAdapter myCommand = null; 13 DataSet ds = null; 14 strExcel = "select * from [sheet1$]"; 15 myCommand = new OleDbDataAdapter(strExcel, strConn); 16 ds = new DataSet(); 17 myCommand.Fill(ds, "table1"); 18 19 //conn.Close(); 20 //dgv.DataMember = "[sheet1$]"; 21 //dgv.DataSource = ds; 22 //return; 23 24 //根據DataGridView的列構造一個新的DataTable 25 System.Data.DataTable tb = new System.Data.DataTable(); 26 27 tb = ds.Tables["table1"]; 28 29 //foreach (DataGridViewColumn dgvc in dgv.Columns) 30 //{ 31 // if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell)) 32 // { 33 // DataColumn dc = new DataColumn(); 34 // dc.ColumnName = dgvc.DataPropertyName; 35 // //dc.DataType = dgvc.ValueType;//若須要限制導入時的數據類型則取消註釋,前提是DataGridView必須先綁定一個數據源那怕是空的DataTable 36 37 dgv.Columns.Clear(); 38 //在DataGridView中顯示導入的數據 39 dgv.DataSource = tb; 40 41 dgv.DefaultCellStyle.BackColor = Color.AliceBlue; //單元格背景顏色 42 dgv.AlternatingRowsDefaultCellStyle.BackColor = Color.LightSkyBlue; //奇數行的背景色 43 //datagridview backcolor 44 dgv.DefaultCellStyle.SelectionBackColor = Color.LimeGreen; //選中單元格顏色 45 dgv.DefaultCellStyle.SelectionForeColor = Color.Blue; //選中單元格內字體顏色 46 47 dgv.DefaultCellStyle.Font = new System.Drawing.Font("Arial", 9, FontStyle.Regular);//單元格內文本的字體設置 48 dgv.DefaultCellStyle.ForeColor = Color.Black; //單元格內字體顏色 49 dgv.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; //列標題格式 50 dgv.ColumnHeadersVisible = true; //列標題可見 51 dgv.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("Arial", 9, FontStyle.Bold); //列標題字體設置 52 dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.LimeGreen; //列標頭背景色 53 dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Blue; 54 55 dgv.Columns[0].Width = 100; 56 dgv.Columns[1].Width = 100; 57 dgv.Columns[2].Width = 280; 58 59 dgv.RowHeadersVisible = false; 60 dgv.AllowUserToAddRows = false; 61 dgv.AllowUserToResizeColumns = false; 62 dgv.AllowUserToResizeRows = false; 63 //dgv.ReadOnly = true; 64 65 dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 66 }
將dataGridView保存爲Excel文件字體
1 /// <summary> 2 /// DataGridView數據保存爲Excel 3 /// </summary> 4 private void ExportExc() 5 { 6 SaveFileDialog dg = new SaveFileDialog();//保存文件對話框,選擇導出文件的存放位置 7 dg.Filter = "xls files(*.xls)|*.xls";//保存爲xls格式 8 if (dg.ShowDialog() == DialogResult.OK) 9 { 10 string filepath = dg.FileName.ToString();//保存文件的路徑 11 12 Microsoft.Office.Interop.Excel.Workbooks objBooks;//接口 workbooks 13 Microsoft.Office.Interop.Excel.Sheets objSheets;// 接口 sheets 14 Microsoft.Office.Interop.Excel._Worksheet objSheet;//接口 worksheet 15 excel = new Microsoft.Office.Interop.Excel.Application(); 16 objBooks = excel.Workbooks; 17 Object miss = System.Reflection.Missing.Value; 18 objBook = objBooks.Add(miss); 19 objSheets = objBook.Sheets; 20 objSheet = (Microsoft.Office.Interop.Excel._Worksheet)objSheets[1]; 21 try 22 { 23 24 if (dataGridView1.Rows.Count == 0) //沒有數據的話就不往下執行 25 return; 26 27 28 excel.Visible = false; //讓後臺執行設置爲不可見,爲true的話會看到打開一個Excel,而後數據在往裏寫 29 30 for (int i = 0; i < dataGridView1.Columns.Count; i++) //生成Excel中列頭名稱 31 { 32 objSheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText; 33 } 34 35 for (int i = 0; i < dataGridView1.Rows.Count; i++) //把DataGridView當前頁的數據保存在Excel中 36 { 37 for (int j = 0; j < dataGridView1.Columns.Count; j++) 38 { 39 if (dataGridView1[j, i].ValueType == typeof(string)) 40 { 41 objSheet.Cells[i + 2, j + 1] = "'" + dataGridView1[j, i].Value.ToString(); 42 } 43 else 44 { 45 objSheet.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString(); 46 } 47 } 48 } 49 objBook.SaveCopyAs(filepath); 50 //設置禁止彈出保存和覆蓋的詢問提示框 51 excel.DisplayAlerts = false; 52 excel.AlertBeforeOverwriting = false; 53 54 //確保Excel進程關閉 55 objBooks.Close(); 56 excel.Workbooks.Close(); 57 excel.Quit(); 58 excel = null; 59 GC.Collect(); 60 MessageBox.Show("數據導出完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 61 if (System.IO.File.Exists(filepath)) 62 System.Diagnostics.Process.Start(filepath); //保存成功後打開此文件 63 64 } 65 catch (Exception ex) 66 { 67 MessageBox.Show(ex.Message, "錯誤提示"); 68 } 69 } 70 }