MyXls是用C#開源項目,可以應用于asp.net 或者 .net應用程序上。它根據微軟公開的Excle文檔格式文件(BIFF),以二進制格式直接生成excel文檔,支持Excel versions 97 - 2007. 。這意味著可以不用在服務器上安裝office就能夠以excle格式輸出數據庫中存儲的數據了。這對于許多項目來說都是很有用的。
目前MyXls已經實現了單元格(cell)的格式設置,包括文本顏色、文本大小、字體、單位格邊框、底色、列寬、行高,合并單元格,多個sheet頁等功能。
目前MyXls還不支持在excel文檔中生成對象(如、文本框、按鈕等)。MyXls主頁稱即將實現對excel文件的讀取功能,個人認為讀取的功能的用處還不是很多。
MyXls主頁:http://myxls.in2bits.org/wiki/MainPage.ashx
下載頁面:http://myxls.in2bits.org/wiki/Downloads.ashx
盡管網上還有其它的類似開源項目,但我花了幾天的時間認真看過了MyXls的源碼(也修正了其中一個小小的bug),覺得其架構搭建的挺好,所以就以它為基礎吧。希望能進一步完善它的功能!
(ps:做為C#及.net的初學者,就算在此設定一個目標吧。)
下載的源碼中包含了幾個簡單的示例,不過實在是太簡單了。讓我不得不仔細分析代碼,才知道怎么使用。
示例來了:
下載MyXls示例文件
string sheetName = "chc 實例";
Worksheet sheet = xls.Workbook.Worksheets.AddNamed(sheetName);//填加名為"chc 實例"的sheet頁
Cells cells = sheet.Cells;//Cells實例是sheet頁中單元格(cell)集合
//單元格1-base
Cell cell = cells.Add(1, 2, "抗");//設定第一行,第二例單元格的值
cell.HorizontalAlignment = HorizontalAlignments.Centered;//設定文字居中
cell.Font.FontName = "方正舒體";//設定字體
cell.Font.Height = 20 * 20;//設定字大?。ㄗ煮w大小是以 1/20 point 為單位的)
cell.UseBorder = true;//使用邊框
cell.BottomLineStyle = 2;//設定邊框底線為粗線
cell.BottomLineColor = Colors.DarkRed;//設定顏色為暗紅
//cell的格式還可以定義在一個xf對象中
XF cellXF = xls.NewXF();//為xls生成一個XF實例(XF是cell格式對象)
cellXF.HorizontalAlignment = HorizontalAlignments.Centered;//設定文字居中
cellXF.Font.FontName = "方正舒體";//設定字體
cellXF.Font.Height = 20 * 20;//設定字大?。ㄗ煮w大小是以 1/20 point 為單位的)
cellXF.UseBorder = true;//使用邊框
cellXF.BottomLineStyle = 2;//設定邊框底線為粗線
cellXF.BottomLineColor = Colors.DarkRed;//設定顏色為暗紅
cell = cells.AddValueCellXF(2, 2,"震", cellXF);//以設定好的格式填加cell
cellXF.Font.FontName = "仿宋_GB2312";
cell = cells.AddValueCellXF(3, 2, "救", cellXF);//格式可以多次使用
ColumnInfo colInfo = new ColumnInfo(xls, sheet);//生成列格式對象
//設定colInfo格式的起作用的列為第2列到第5列(列格式為0-base)
colInfo.ColumnIndexStart = 1;//起始列為第二列
colInfo.ColumnIndexEnd = 5;//終止列為第六列
colInfo.Width = 15 * 256;//列的寬度計量單位為 1/256 字符寬
sheet.AddColumnInfo(colInfo);//把格式附加到sheet頁上(注:AddColumnInfo方法有點小問題,不給把colInfo對象多次附給sheet頁)
colInfo.ColumnIndexEnd = 6;//可以更改列對象的值
ColumnInfo colInfo2 = new ColumnInfo(xls, sheet);//通過新生成一個列格式對象,才到能設定其它列寬度
colInfo2.ColumnIndexStart = 7;
colInfo2.ColumnIndexEnd = 8;
colInfo2.Width = 1 * 256;
sheet.AddColumnInfo(colInfo2);
MergeArea meaA = new MergeArea(1,2,3,4);//一個合并單元格實例(合并第一行、第三例 到 第二行、第四例)
sheet.AddMergeArea(meaA);//填加合并單元格
cellXF.VerticalAlignment= VerticalAlignments.Centered;
cellXF.Font.Height = 48 * 20;
cellXF.Font.Bold = true;
cellXF.Pattern = 3;//設定單元格填充風格。如果設定為0,則是純色填充
cellXF.PatternBackgroundColor = Colors.DarkRed;//填充的底色
cellXF.PatternColor = Colors.DarkGreen;//設定填充線條的顏色
cell = cells.Add(1, 3, "災",cellXF);