日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Myxls导出excel报表

發(fā)布時(shí)間:2025/7/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Myxls导出excel报表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ?最近項(xiàng)目中有一個(gè)導(dǎo)出excel報(bào)表的需求。大體就是將一個(gè)datatable中的數(shù)據(jù)導(dǎo)出到excel供用戶下載。開始也想過幾種方法:

1.因?yàn)閳?bào)表已經(jīng)在頁(yè)面上展現(xiàn)出來了,所以想能不能使用js直接將頁(yè)面的table給保存到excel中,如果真能實(shí)現(xiàn)那還真討巧了。但是查了一下使用js好像都必須用到activex組件,也就限制了只能在IE下使用。否決。

2.為了兼容大多數(shù)的瀏覽器貌似只能將生成工作放在服務(wù)器端了。兩個(gè)問題。一,如何生成。二,生成了以后如何給用戶。

對(duì)于第一個(gè)問題,我剛開始想直接寫字符串,中間使用\t分隔。雖然這樣也能生成“偽excel”(暫時(shí)這么叫吧)不過效果卻不好。不能控制單元格的樣式以及合并。也有一種方法是使用微軟的office組件,不過這要求你在服務(wù)器上安裝了office,而且據(jù)說使用這種方法在進(jìn)程釋放方面有問題。

對(duì)于第二個(gè)問題,有人是直接在服務(wù)器端生成后將連接發(fā)送給用戶給用戶下載。有人是直接給response設(shè)置頭信息,讓瀏覽器直接返回下載。顯然第二種方法要好得多。

總之想要既簡(jiǎn)單又很好的到處excel也不是那么簡(jiǎn)單的一回事。不過嘛……有了myxls以后,一切就變得美好又簡(jiǎn)單了。

Myxls

????? MyXls是用C#開源項(xiàng)目,可以應(yīng)用于asp.net 或者 .net應(yīng)用程序上。它根據(jù)微軟公開的Excle文檔格式文件(BIFF),以二進(jìn)制格式直接生成excel文檔,支持Excel versions 97 - 2007。目前MyXls已經(jīng)實(shí)現(xiàn)了單元格(cell)的格式設(shè)置,包括文本顏色、文本大小、字體、單位格邊框、底色、列寬、行高,合并單元格,多個(gè)sheet頁(yè)等功能。

? ? ? 你可以在這里找到myxls項(xiàng)目:http://sourceforge.net/projects/myxls/

? ? ? 需要注意的是,如果你想在asp.net中使用myxls,那么上面鏈接中的download并不適合你,因?yàn)槟鞘轻槍?duì)silverlight的。你可以到這里下載asp.net版本的http://sourceforge.net/projects/myxls/files/MyXls/v0.6.3/

? ? ?說完了介紹,我們?cè)賮碚f說如何使用。我做了一個(gè)demo,希望可以幫助你更加直觀的了解如何使用myxls。下面一段代碼是demo中將datatable輸出為為excel的方法:

private XlsDocument DataTableExportToExcel(DataTable dataTable, string excelName, string sheetName){XlsDocument xls = new XlsDocument(); //新建一個(gè)xls文檔 xls.FileName = excelName + ".xls"; //設(shè)定Excel文件名 Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);//填加名為"第一個(gè)Sheet Demo"的sheet頁(yè) Cells cells = sheet.Cells;//Cells實(shí)例是sheet頁(yè)中單元格(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];//對(duì)于數(shù)字,需要將其轉(zhuǎn)化為數(shù)字類型。否則將默認(rèn)以字符串類型輸出到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;}

對(duì)于返回的xls變量,只需要使用

xls.Send();

就可以將excel流返回到客戶端,此時(shí)瀏覽器會(huì)自動(dòng)彈出excel下載窗口供用戶下載了。輸出的截圖如下:

Demo下載

? ? ? ?http://dl.dbank.com/c0b5au1uuz

轉(zhuǎn)載于:https://www.cnblogs.com/qianlifeng/archive/2011/08/21/2147873.html

總結(jié)

以上是生活随笔為你收集整理的Myxls导出excel报表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。