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