一, 需要在Silverlight中導出Excel文件,累死了N個腦細胞,忙活了數天,終於是搞定了,哈哈。
很常見的方法就是,在Silverlight中提升瀏覽器的信任級別,直接調用COM+組件導出EXCEL文件。
dynamic excel = AutomationFactory.CreateObject("Excel.Application");
dynamic workbook = excel.WorkBooks;
workbook.Add();
dynamic sheet = excel.ActiveSheet;
dynamic _cell = sheet.Cells[Row, Col];
_cell.Value = "HELLO WORLD,xiwang";
SvaeFileDialog sfd=new SaveFileDialog();
var result=sfd.ShowDialog();
if (result ?? false)
using (var stream =sfd.OpenFile())
excel.Save(stream);
//其他的如:合並單元格,字體,背景色,邊框等等。網上遍地都是我就不再廢話了。
在用這種方法實現后,結果吐血:導出的速度堪比龜速,下流至極。
別無他法另想辦法:開源庫,糾結幾次后,總與找到了一個Silverlight可用的庫:MyXLS(神一般的到處速度)。
XlsDocument xls = new XlsDocument();
string sheetName = "HELLO WORLD, xiwang ";
Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);
Cells cells = sheet.Cells;
cells.Add(1,1,"xiwang ,Cool!");
SvaeFileDialog sfd=new SaveFileDialog();
var result=sfd.ShowDialog();
if (result ?? false)
using (var stream =sfd.OpenFile())
xls.Save(stream);
二,開源庫小結:
一, MyXls(現在有Silverlight版本)
下載地址:http://sourceforge.net/projects/myxls/
MyXls支持Office Excel 97-2003格式(Biff8格式),但目前並不支持formula即公式;網上流傳的支持2007是錯誤的說法。
使用它還需要注意的是,它與Office PIA一樣,索引號是從1開始的。
另外不得不說的是,它的構造函數、Save方法、屬性中的FileName讓人看的眼花瞭亂,無所適從吶-_-。
二,Koogra
下載地址:http://sourceforge.net/projects/koogra/
Koogra支持Office 97-2003(Biff8)以及Office 2007以上(Xlsx)格式,但它僅提供讀取功能,沒有相關的創建Excel功能;另需要注意它的索引號又是從0開始的。
我在幾台機器上測試不太穩定,即有的機器直接不能運行,沒有深究什么問題。
三,ExcelLibrary
下載地址:http://code.google.com/p/excellibrary/
聽說這是國人開發的,目前支持97-2003(biff8)格式,未來可能會支持xlsx格式。它使用二維數組的方式來操作,這種方式比較接近Office PIA,另外,它的索引號是從0開始的。
在測試時,創建出的Excel有時內容是空的,可能存在bug。
ExcelPackage與EPPlus
ExcelPackage下載地址:http://excelpackage.codeplex.com/
EPPlus下載地址:http://epplus.codeplex.com/
ExcelPackage它主要支持OOXML即Office Open XML標准,Office 2007以上XLSX格式的讀寫;但它不支持對流的操作,僅支持對實體文件的操作。
EPPlus全稱應該是ExcelPackage Plus,即ExcelPackage的增強版,它在ExcelPackage的基礎上,增強了許多功能包括對流、Linq的支持,可以說相當不錯。
四,.NET版的POI NPOI
下載地址:http://npoi.codeplex.com/releases/view/19351
NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫。
五,Silverlight ExcelLite
ExcelLite下載地址:http://excellite.codeplex.com/
可以在沒有安裝MS Office環境下,寫入excel 2003,庫使用二進制格式讀寫數據,支持圖片添加等。據我當前所知,該庫對合並單元格,設置邊框等等支持不好。不支持xlsx格式,但是讀寫速度很快,小巧可以嘗試下。