简单的Excel导出(两种方式)
生活随笔
收集整理的這篇文章主要介紹了
简单的Excel导出(两种方式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近項目里面有個周報Excel導出的功能,為了解決這個問題,我顯示調研Excel內核的方式實現了,但是被告知該方法有諸多弊端(1、服務器需要裝相應版本的Excel;2、如果程序中途出錯服務器會有很多Excel進程);最后用得aspose.cells第三方控件的方式完成。
一、Excel內核方式實現
該方法首先需要添加引用Microsoft.Office.Interop.Excel;然后添加同名的using。具體數據插入的邏輯可以忽略,代碼如下
?
二、aspose.cell方式實現
該方法需要第三方控件的支持,可以在csdn上直接搜索下載,也可以購買。官網上有很多例子,我這個只是最最基礎的。具體代碼如下。(記得加引用后加using)
View Code 1 /// <summary> 2 /// 生成Excel到指定目錄 3 /// </summary> 4 /// <param name="tArys"></param> 5 /// <param name="regulardatetext"></param> 6 public static void ExportWeeklyReport(object[] tArys, string templetFileName, string reportFileName) 7 { 8 9 10 /////參考Aspose.Cells官網的例子http://www.aspose.com/demos/.net-components/aspose.cells/csharp/quick-start/data/hello-world.aspx 11 12 //打開excel 13 14 Workbook wb = new Workbook(templetFileName);//打開對應地址的excel模板 15 Worksheet ws = wb.Worksheets[1];//第二個sheet,從0開始 16 Cells cells = ws.Cells;//獲取對應的cells 的引用 17 18 ////定義幾個需要計算的變量 19 int stafforganizedTotal = 0; 20 int staffonguardTotal = 0; 21 int staffontripTotal = 0; 22 int stafftemporaryTotal = 0; 23 string requiredtime = string.Empty; 24 25 ///把數據寫到Excel// 26 if (tArys != null) 27 { 28 for (int tis = 0; tis < tArys.Length; tis++) 29 { 30 31 object[,] tAry = (object[,])tArys[tis]; 32 for (int ti = 0; ti < tAry.GetLength(0); ti++) 33 { 34 string name = cls.toString(tAry[ti, 0]); 35 switch (name) 36 { 37 case "stafforganized": 38 stafforganizedTotal += cls.getNum(cls.toString(tAry[ti, 1])); 39 break; 40 case "staffonguard": 41 staffonguardTotal += cls.getNum(cls.toString(tAry[ti, 1])); 42 break; 43 case "staffontrip": 44 staffontripTotal += cls.getNum(cls.toString(tAry[ti, 1])); 45 break; 46 case "stafftemporary": 47 stafftemporaryTotal += cls.getNum(cls.toString(tAry[ti, 1])); 48 break; 49 case "requiredtime": 50 requiredtime = cls.toString(tAry[ti, 1]); 51 break; 52 case "content": 53 cells[9 + tis, 4].PutValue(cls.toString(tAry[ti, 1]), true); 54 break; 55 case "plan": 56 cells[24 + tis, 4].PutValue(cls.toString(tAry[ti, 1]), true); 57 break; 58 case "responsibleperson": 59 cells[24 + tis, 11].PutValue(cls.toString(tAry[ti, 1]), true); 60 break; 61 default: 62 break; 63 } 64 65 } 66 67 } 68 cells[5, 5].PutValue(stafforganizedTotal); 69 cells[5, 7].PutValue(staffonguardTotal); 70 cells[5, 9].PutValue(staffontripTotal); 71 cells[5, 11].PutValue(stafftemporaryTotal); 72 cells[3, 10].PutValue(requiredtime); 73 74 } 75 76 77 78 79 //保存到相應的路徑 80 wb.Save(reportFileName); 81 82 83 84 }轉載于:https://www.cnblogs.com/chuanzhifeng/archive/2012/11/13/2768102.html
總結
以上是生活随笔為你收集整理的简单的Excel导出(两种方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NumericUpDown使用备注
- 下一篇: Java中截取文件名不要后缀