2020年8月14日星期五

导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)

最近在项目中,遇到一些需求,就是将数据导出来,以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月份去哪旅游好?泡温泉需要穿泳衣吗?泡温泉穿什么泳衣?

没有评论:

发表评论