Myxls导出excel报表
? ? ?最近項目中有一個導(dǎo)出excel報表的需求。大體就是將一個datatable中的數(shù)據(jù)導(dǎo)出到excel供用戶下載。開始也想過幾種方法:
1.因為報表已經(jīng)在頁面上展現(xiàn)出來了,所以想能不能使用js直接將頁面的table給保存到excel中,如果真能實現(xiàn)那還真討巧了。但是查了一下使用js好像都必須用到activex組件,也就限制了只能在IE下使用。否決。
2.為了兼容大多數(shù)的瀏覽器貌似只能將生成工作放在服務(wù)器端了。兩個問題。一,如何生成。二,生成了以后如何給用戶。
對于第一個問題,我剛開始想直接寫字符串,中間使用\t分隔。雖然這樣也能生成“偽excel”(暫時這么叫吧)不過效果卻不好。不能控制單元格的樣式以及合并。也有一種方法是使用微軟的office組件,不過這要求你在服務(wù)器上安裝了office,而且據(jù)說使用這種方法在進程釋放方面有問題。
對于第二個問題,有人是直接在服務(wù)器端生成后將連接發(fā)送給用戶給用戶下載。有人是直接給response設(shè)置頭信息,讓瀏覽器直接返回下載。顯然第二種方法要好得多。
總之想要既簡單又很好的到處excel也不是那么簡單的一回事。不過嘛……有了myxls以后,一切就變得美好又簡單了。
Myxls????? MyXls是用C#開源項目,可以應(yīng)用于asp.net 或者 .net應(yīng)用程序上。它根據(jù)微軟公開的Excle文檔格式文件(BIFF),以二進制格式直接生成excel文檔,支持Excel versions 97 - 2007。目前MyXls已經(jīng)實現(xiàn)了單元格(cell)的格式設(shè)置,包括文本顏色、文本大小、字體、單位格邊框、底色、列寬、行高,合并單元格,多個sheet頁等功能。
? ? ? 你可以在這里找到myxls項目:http://sourceforge.net/projects/myxls/
? ? ? 需要注意的是,如果你想在asp.net中使用myxls,那么上面鏈接中的download并不適合你,因為那是針對silverlight的。你可以到這里下載asp.net版本的http://sourceforge.net/projects/myxls/files/MyXls/v0.6.3/
? ? ?說完了介紹,我們再來說說如何使用。我做了一個demo,希望可以幫助你更加直觀的了解如何使用myxls。下面一段代碼是demo中將datatable輸出為為excel的方法:
private XlsDocument DataTableExportToExcel(DataTable dataTable, string excelName, string sheetName){XlsDocument xls = new XlsDocument(); //新建一個xls文檔 xls.FileName = excelName + ".xls"; //設(shè)定Excel文件名 Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);//填加名為"第一個Sheet Demo"的sheet頁 Cells cells = sheet.Cells;//Cells實例是sheet頁中單元格(cell)集合 for (int row = 0; row < dataTable.Rows.Count; row++){for (int column = 0; column < dataTable.Columns.Count; column++){object val = dataTable.Rows[row][column];//對于數(shù)字,需要將其轉(zhuǎn)化為數(shù)字類型。否則將默認以字符串類型輸出到excel中double doubleVal;if (double.TryParse(val.ToString(), out doubleVal)){cells.Add(row + 1, column + 1, doubleVal);}else{cells.Add(row + 1, column + 1, val.ToString());}}}return xls;}對于返回的xls變量,只需要使用
xls.Send();就可以將excel流返回到客戶端,此時瀏覽器會自動彈出excel下載窗口供用戶下載了。輸出的截圖如下:
Demo下載? ? ? ?http://dl.dbank.com/c0b5au1uuz
轉(zhuǎn)載于:https://www.cnblogs.com/qianlifeng/archive/2011/08/21/2147873.html
總結(jié)
以上是生活随笔為你收集整理的Myxls导出excel报表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装最新Spree出现error:spr
- 下一篇: 第 17 章 Native SQL查询