简单的Excel导出(两种方式)
生活随笔
收集整理的這篇文章主要介紹了
简单的Excel导出(两种方式)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近項(xiàng)目里面有個(gè)周報(bào)Excel導(dǎo)出的功能,為了解決這個(gè)問題,我顯示調(diào)研Excel內(nèi)核的方式實(shí)現(xiàn)了,但是被告知該方法有諸多弊端(1、服務(wù)器需要裝相應(yīng)版本的Excel;2、如果程序中途出錯(cuò)服務(wù)器會有很多Excel進(jìn)程);最后用得aspose.cells第三方控件的方式完成。
一、Excel內(nèi)核方式實(shí)現(xiàn)
該方法首先需要添加引用Microsoft.Office.Interop.Excel;然后添加同名的using。具體數(shù)據(jù)插入的邏輯可以忽略,代碼如下
?
二、aspose.cell方式實(shí)現(xiàn)
該方法需要第三方控件的支持,可以在csdn上直接搜索下載,也可以購買。官網(wǎng)上有很多例子,我這個(gè)只是最最基礎(chǔ)的。具體代碼如下。(記得加引用后加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官網(wǎng)的例子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);//打開對應(yīng)地址的excel模板 15 Worksheet ws = wb.Worksheets[1];//第二個(gè)sheet,從0開始 16 Cells cells = ws.Cells;//獲取對應(yīng)的cells 的引用 17 18 ////定義幾個(gè)需要計(jì)算的變量 19 int stafforganizedTotal = 0; 20 int staffonguardTotal = 0; 21 int staffontripTotal = 0; 22 int stafftemporaryTotal = 0; 23 string requiredtime = string.Empty; 24 25 ///把數(shù)據(jù)寫到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 //保存到相應(yīng)的路徑 80 wb.Save(reportFileName); 81 82 83 84 }轉(zhuǎn)載于:https://www.cnblogs.com/chuanzhifeng/archive/2012/11/13/2768102.html
總結(jié)
以上是生活随笔為你收集整理的简单的Excel导出(两种方式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NumericUpDown使用备注
- 下一篇: testbench常用任务之SPI sl