用MyXls生成Excel报表(C#)

转自http://www.oschina.net/code/snippet_156249_4855

2010年08月09日 星期一 13:09

       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, int endRow, 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/

标签: MyXLS

代码片段(1)

[代码] [C#]代码

view sourceprint?

01 //1.创建一个Excel文档:
02  
03 XlsDocument xls = new XlsDocument();
04  
05 //2.创建一个WorkSheet:
06  
07 Worksheet ws = xls.Workbook.Worksheets.Add("WorkSheet1");
08  
09 //3.指定列格式:
10  
11 ColumnInfo colInfo = new ColumnInfo(xls, ws);
12 colInfo.ColumnIndexStart = 0;
13 colInfo.ColumnIndexEnd = 17;
14 colInfo.Width = 15 * 256;
15 ws.AddColumnInfo(colInfo);
16  
17 //列格式必须每次都要重新定义,一个列格式不能重复使用。
18  
19 //4.指定单元格样式:
20  
21 XF xf = xls.NewXF();
22 xf.HorizontalAlignment = HorizontalAlignments.Centered;
23 xf.VerticalAlignment = VerticalAlignments.Centered;
24 xf.Pattern = 1;
25 xf.PatternColor = Colors.Default30;
26 xf.UseBorder = true;
27 xf.TopLineStyle = 1;
28 xf.TopLineColor = Colors.Black;
29 xf.BottomLineStyle = 1;
30 xf.BottomLineColor = Colors.Black;
31 xf.LeftLineStyle = 1;
32 xf.LeftLineColor = Colors.Black;
33 xf.RightLineStyle = 1;
34 xf.RightLineColor = Colors.Black;
35 xf.Font.Bold = true;
36 xf.Font.Height = 11 * 20;
37 xf.Font.ColorIndex = 1;
38  
39 //5.给单元格赋值:
40  
41 ws.Cells.Add(2, 3, "金额(万元)", xf);
42  
43 //6.合并单元格:
44 ws.Cells.Merge(1, 2, 2, 2);
45 //或者
46 ws.AddMergeArea(new MergeArea(1, 2, 1, 1));
47  
48 //7.MyXls合并单元格有个bug,就是合并后只是第一个单元格有样式,其余的样式丢失。所以写了个函数来合并:
49  
50 MergeRegion(ref ws, xf, "机构", 1, 1, 2, 1);
51  
52 public 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  
68 cell.Format = StandardFormats.Decimal_1;
69  
70 //具体更多请参考源代码的StandardFormats类。
71  
72 //9.保存或者发送Excel:
73  
74 xls.Send();
75 //或者
76 xls.Save();

 

时间: 2024-12-04 21:38:31

用MyXls生成Excel报表(C#)的相关文章

Vbscript生成Excel报表的常用操作总结_vbs

使用QTP自动化测试结束后,经常需要将测试结果写入Excel中,这里就把一些常用对Excel操作的方法进行归纳.整理,方便使用时查阅.支持Office Excel 2003版本,不支持2007版本. Vbscript代码 On Error Resume Next Dim FileName, SheetName, Text, ExcelApp, ExcelBook, ExcelSheet FileName = "D:/Book1.xls" SheetName = "新建表&qu

从DataView中生成Excel报表的方案(C#)

excel|生成excel 前言:前几天一同事问我如何利用C#将数据导到Excel文件当中,当时比较忙没有顾得上去研究,今天特地研究了一下,基本搞定,下面就具体介绍如何将DataView中的数据按照一定格式存到Excel文件当中.正文:一.首先要引用一个Excel的组件,我一开始是在Office XP下尝试的,不成功,后来把XP给干掉,装2k,就成功了,所以这里分享的是Office 2k下引用相关组件来实现功能的,在工程中引用COM标签中的Microsoft Excel 9.0 Object L

.net关于企业Excel报表的生成

excel 在一般的企业应用开发中都会涉及到报表的生成,且一般报表的格式都是生成Excel格式的.对于各种报表的生成一直是程序员心中永远的痛,因为对于很多程序员来说每写一个报表都意味着要写一大断代码来实现,而且有的报表可能极其复杂以及不规范,这时就会浪费程序员大量的时间来编写和调试这些代码,那到底有没有一种方法能使代码尽量少写,且又能实现各种Excel报表的生成呢,下面我们就转入正题. 我们要生成Excel报表,其实我们只需要两样东西: 1.报表的样式,也就是哪个字段应该填在哪里,哪一列应该填什

php生成Excel文件 实现代码

 <p>有段日子没有更新博客了,生怕被百度遗忘啊,biu~biu~.最近有个项目需要统计网站的url和title,保存在excel里面,下面是具体的代码</p> <pre class="php" name="code"><!--p //php生成excel报表,是通过发送header()头信息完成的 header("Content-Type: application/vnd.ms-execl"); hea

java界面生成excel-OpenXLS如何使用,如何界面生成excel

问题描述 OpenXLS如何使用,如何界面生成excel 用java开发,想要在界面上生成excel一样的界面,可以直接像使用excel一样的使用 解决方案 http://jingyan.baidu.com/article/ac6a9a5e65ac402b653eac8d.html 解决方案二: 使用POI生成Excel报表使用JAVA通过JExcel动态生成Excel文件如何使用Java POI生成Excel表文件 !

python读写excel的例子(生成excel)

例子.超级简单读取csv 1.用python读取csv文件: csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx  直接重命名为csv的话会报错: Error: line contains NULL byte insun解决方案:出错原因是直接是把后缀为xls的execl文件重命名为csv的 正常的要是另存为csv文件 就不会报错了 譬如我们有这么个csv文件: #!/usr/bin/env python # -*- coding:utf-8 -*-   import c

生成Excel高级报表

前不久行里说要生成一个如下的Excel报表,试了很多种方法都不行,突然想到excel引用,宏,试写了下,发现效果不错. 各位可以参考此方法生成任意格式的Excel,可能很多人直接用程序来一行行的写,想想这是多复杂的事情啊,想设置Excel格式就更加复杂了.而且程序循环效率也极慢,照我方法可以直接下载后就直接打印,格式全部已设置好.好了,废话不多说,觉得好用多多推广,转载请注示一下来自http://www.cnbolgs.com/xiaobier,谢谢.以下是生成后的效果图: 我这里用的数据库是S

MyXls导excel遇到长数字,自动变成科学计数法了,能不能有办法自动生成字符串型?

问题描述 MyXls导excel遇到长数字,自动变成科学计数法了,能不能有办法自动生成字符串型?求教了 解决方案 解决方案二:在特殊列的数据前加个符号就可以了,比如加个'解决方案三:我也试过,但是导出的excel会显示单引号',能不能自动隐去这个单引号?

Web应用导出Excel报表的简单实现(HTML)

excel|web|导出excel Web应用导出Excel报表的简单实现      在Web应用中,很多数据经常要导出成Excel文档.用专门的生成真正的Excel文档的方式比较复杂,不太好用.所以经常用一种简单的方式来实现,即将报表保存为HTML格式,然后用Excel打开. 实现方式:    第一步,用JSP实现HTML版本的报表    第二步,在该JSP页面头部设置response的ContentType为Excel格式            <% response.setContentT