用MyXls生成Excel报表(C#)

来源:互联网 发布:知其不善则速改以从善 编辑:程序博客网 时间:2024/05/30 07:12
MyXLS 是一个快速和简单的读写 Excel 文件的 .NET 组件,可用在 ASP.NET 网站和 .NET 应用程序中,无需安装 Excel 程序,支持 Excel 97 以及以后的版本。

       目前MyXls已经实现了单元格(cell)的格式设置,包括文本颜色、文本大小、字体、单位格边框、底色、列宽、行高,合并单元格,多个sheet页等功能。以下是MyXLS组件的一些用法:

1.创建一个Excel文档:

XlsDocument xls = new XlsDocument();

2.创建一个WorkSheet:

Worksheet ws = xls.Workbook.Worksheets.Add("WorkSheet1");

3.指定列格式:

ColumnInfo colInfo = new ColumnInfo(xls, ws);
colInfo.ColumnIndexStart
 = ;
colInfo.ColumnIndexEnd
 = 17;
colInfo.Width
 = 15 * 256;
ws.AddColumnInfo(colInfo);

列格式必须每次都要重新定义,一个列格式不能重复使用。

4.指定单元格样式:

XF xf = xls.NewXF();
xf.HorizontalAlignment
 = HorizontalAlignments.Centered;
xf.VerticalAlignment
 = VerticalAlignments.Centered;
xf.Pattern
 = 1;
xf.PatternColor
 = Colors.Default30;
xf.UseBorder
 = true;
xf.TopLineStyle
 = 1;
xf.TopLineColor
 = Colors.Black;
xf.BottomLineStyle
 = 1;
xf.BottomLineColor
 = Colors.Black;
xf.LeftLineStyle
 = 1;
xf.LeftLineColor
 = Colors.Black;
xf.RightLineStyle
 = 1;
xf.RightLineColor
 = Colors.Black;
xf.Font.Bold
 = true;
xf.Font.Height
 = 11 * 20;
xf.Font.ColorIndex
 = 1;

5.给单元格赋值:

ws.Cells.Add(2, 3, "金额(万元)", xf);

6.合并单元格:

ws.Cells.Merge(1, 2, 2, 2);
//或者
ws.AddMergeArea(new MergeArea(1, 2, 1, 1));

7.MyXls合并单元格有个bug,就是合并后只是第一个单元格有样式,其余的样式丢失。所以写了个函数来合并:

MergeRegion(ref ws, xf, "机构", 1, 1, 2, 1);

public void MergeRegion(ref Worksheet ws, XF xf, string title, int startRow, int startCol, intendRow, int endCol)
{
      
for (int i = startCol; i <= endCol; i++)
       {
            
for (int j = startRow; j <= endRow; j++)
             {
                 ws.Cells.Add(j, i, title, xf);
             }
       }
       ws.Cells.Merge(startRow, endRow, startCol, endCol);
}

虽然效率不怎么样,但是对于出Excel报表,还OK。

8.指定单元格格式

cell.Format = StandardFormats.Decimal_1;

具体更多请参考源代码的StandardFormats类。

9.保存或者发送Excel:

xls.Send();
//或者
xls.Save();

MyXls下载地址:http://myxls.in2bits.org/Downloads.ashx

http://sourceforge.net/projects/myxls/files/

代码] [C#]代码

01//1.创建一个Excel文档:
02  
03XlsDocument xls = new XlsDocument();
04  
05//2.创建一个WorkSheet:
06  
07Worksheet ws = xls.Workbook.Worksheets.Add("WorkSheet1");
08  
09//3.指定列格式:
10  
11ColumnInfo colInfo = new ColumnInfo(xls, ws);
12colInfo.ColumnIndexStart = 0;
13colInfo.ColumnIndexEnd = 17;
14colInfo.Width = 15 * 256;
15ws.AddColumnInfo(colInfo);
16  
17//列格式必须每次都要重新定义,一个列格式不能重复使用。
18  
19//4.指定单元格样式:
20  
21XF xf = xls.NewXF();
22xf.HorizontalAlignment = HorizontalAlignments.Centered;
23xf.VerticalAlignment = VerticalAlignments.Centered;
24xf.Pattern = 1;
25xf.PatternColor = Colors.Default30;
26xf.UseBorder = true;
27xf.TopLineStyle = 1;
28xf.TopLineColor = Colors.Black;
29xf.BottomLineStyle = 1;
30xf.BottomLineColor = Colors.Black;
31xf.LeftLineStyle = 1;
32xf.LeftLineColor = Colors.Black;
33xf.RightLineStyle = 1;
34xf.RightLineColor = Colors.Black;
35xf.Font.Bold = true;
36xf.Font.Height = 11 * 20;
37xf.Font.ColorIndex = 1;
38  
39//5.给单元格赋值:
40  
41ws.Cells.Add(2, 3, "金额(万元)", xf);
42  
43//6.合并单元格:
44ws.Cells.Merge(1, 2, 2, 2);
45//或者
46ws.AddMergeArea(new MergeArea(1, 2, 1, 1));
47  
48//7.MyXls合并单元格有个bug,就是合并后只是第一个单元格有样式,其余的样式丢失。所以写了个函数来合并:
49  
50MergeRegion(ref ws, xf, "机构", 1, 1, 2, 1);
51  
52public void MergeRegion(ref Worksheet ws, XF xf, string title, int startRow, int startCol, int endRow, int endCol)
53{
54      for (int i = startCol; i <= endCol; i++)
55       {
56            for (int j = startRow; j <= endRow; j++)
57             {
58                 ws.Cells.Add(j, i, title, xf);
59             }
60       }
61       ws.Cells.Merge(startRow, endRow, startCol, endCol);
62}
63  
64//虽然效率不怎么样,但是对于出Excel报表,还OK。
65  
66//8.指定单元格格式:
67  
68cell.Format = StandardFormats.Decimal_1;
69  
70//具体更多请参考源代码的StandardFormats类。
71  
72//9.保存或者发送Excel:
73  
74xls.Send();
75//或者
76xls.Save();
转载自:http://www.oschina.net/code/snippet_156249_4855
原创粉丝点击