最近在項目中,遇到一些需求,就是將數據導出來,以Excel文件爲主:就本身簡單的作一些demo:供初學者來學習: app
1 // 定義一個保存文件的路徑位置 2 SaveFileDialog dlgPath = new SaveFileDialog(); 3 string sPath = string.Empty; 4 // 須要保存的格式 5 dlgPath.Filter = "Excel文件(*.xls)|*.xls"; 6 7 // 對Excel相應的操做定義變量 8 ApplicationClass app = new ApplicationClass(); 9 Microsoft.Office.Interop.Excel._Workbook _workBook = null; 10 11 try 12 { 13 // 彈出要保存文件的位置(可選擇也能夠默認路徑) 14 if (dlgPath.ShowDialog() == System.Windows.Forms.DialogResult.OK) 15 { 16 sPath = dlgPath.FileName; 17 } 18 else 19 { 20 return; 21 } 22 23 24 Workbooks workBooks = app.Workbooks; 25 _workBook = workBooks.Add(true); 26 27 Sheets sheets = _workBook.Sheets; 28 29 Worksheet sheet = (Worksheet)sheets[1]; 30 31 //判斷表頭是爲空 32 if (!string.IsNullOrEmpty(dt.TableName)) 33 { 34 sheet.Name = dt.TableName; 35 } 36 37 char sExcelColn = 'A'; 38 char sExcelColnEx = 'A'; 39 for (int i = 0; i < dt.Columns.Count; i++) 40 { 41 // 設置Excel某列單元格的文本格式,從第二行開始 42 for (int index = 2; index < dt.Rows.Count+2; index++) 43 { 44 if (i > 25) 45 { 46 Range objRange = sheet.get_Range("A" + sExcelColnEx + index.ToString(), Type.Missing); 47 if (null!=objRange) 48 { 49 objRange.NumberFormatLocal = "@"; 50 } 51 else { 52 break; 53 } 54 } 55 else 56 { 57 Range objRange = sheet.get_Range("A" + sExcelColn + index.ToString(), Type.Missing); 58 if (null != objRange) 59 { 60 objRange.NumberFormatLocal = "@"; 61 } 62 } 63 } 64 if (i<=25) 65 { 66 sExcelColn++; 67 }else 68 { 69 sExcelColnEx++; 70 } 71 } 72 int x = 1, y = 1; 73 foreach (DataColumn cloumn in dt.Columns) 74 { 75 // 若是Caption不爲空表頭輸出使用Caption,不然使用ColumnName 76 if (string.IsNullOrEmpty(cloumn.Caption.ToString())) 77 { 78 sheet.Cells[x, y++] = cloumn.ColumnName.ToString(); 79 } 80 else 81 { 82 83 sheet.Cells[x, y++] = cloumn.Caption.ToString(); 84 } 85 } 86 x++; 87 y = 1; 88 89 foreach (DataRow row in dt.Rows) 90 { 91 foreach (DataColumn column in dt.Columns) 92 { 93 sheet.Cells[x,y++] = row[column.ColumnName].ToString(); 94 } 95 x++; 96 y = 1; 97 } 98 _workBook.SaveAs(sPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 99 XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 100 101 } 102 catch (Exception ex) 103 { 104 105 throw ex; 106 } 107 finally 108 { 109 if (_workBook!=null) 110 { 111 _workBook.Close(Type.Missing, Type.Missing, Type.Missing); 112 } 113 if (app!=null) 114 { 115 app.Quit(); 116 } 117 }
上面的代碼是將數據轉換成Excel的過程:學習
咱們在作一組假數據,看看效果:ui
1 // 表格數據 2 System.Data.DataTable dt = new System.Data.DataTable(); 3 dt.Columns.Add("name"); 4 dt.Columns.Add("age"); 5 dt.Columns.Add("sex"); 6 dt.Columns.Add("weight"); 7 dt.Columns.Add("height"); 8 dt.Columns.Add("adress"); 9 dt.Columns.Add("phone"); 10 dt.Columns.Add("workAdress"); 11 12 DataRow dr = dt.NewRow(); 13 dr["name"] = "萬三竇"; 14 dr["age"] = "28"; 15 dr["sex"] = "男"; 16 dr["weight"] = "68kg"; 17 dr["height"] = "167cm"; 18 dr["adress"] = "豐臺區大井"; 19 dr["phone"] = "13866669999"; 20 dr["workAdress"] = "金堂國際大廈配樓301"; 21 dt.Rows.Add(dr);
我上面是用WindowForm作的demo:只需在界面加個按鈕調用下,就能夠,咱們來看下效果spa
如有不正確的地方,請你們多多指教!3d