最近在项目中,遇到一些需求,就是将数据导出来,以Excel文件为主:就自己简单的做一些demo:供初学者来学习:
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 finally108 {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的过程:
我们在做一组假数据,看看效果:
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:只需在界面加个按钮调用下,就可以,我们来看下效果

若有不正确的地方,请大家多多指教!
导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)中级管理、 后台操作、 营销推广、 打造速卖通爆款和选品的思路的方法[速卖通运营]、 店铺流量上不去?这几个站内引流技巧了解一下!、 1月至11月:海南海口跨境电商申报清单达10.8万单!、 泡温泉需要带什么?、 11月份去哪玩?11月份去哪旅游好?、 泡温泉需要穿泳衣吗?泡温泉穿什么泳衣?、
没有评论:
发表评论