如果从快速生成Excel报表,不调用Excel组件角度讲,MyXls可能是一种最好的选择之一,当然使用Open Xml方式也是不错的选择。MyXls是一个用C#语言开发的生成Excel报表的优秀开源项目,在快速开发中我一直比较喜欢它。MyXls官方的解释:
Writes and now Reads Excel files quickly and easily, including formatting. Generate Excel files for ASP.NET sites or .NET applications. Doesn't require Excel on the server or any licensing $. Compatible with Excel versions >= 97
MyXls可以用在.NET平台的诸如Windows Form,Asp.NET项目中,当然Sharepoint项目中也可以使用,支持的Excel版本包裹2003,2007等等(Excel versions >= 97)。
大凡开源项目的作者,多半都是重口味者,MyXls开源组件基于的技术是Excel文件的二进制格式(BIFF),   OpenOffice.org发布过的俩个文档Excel File Format (BIFF8)Specification和Microsoft CompoundDocument (OLE2) Format Specification对Excel的二进制格式做了一个比较详细的说明,MyXls的作者正是凭借这些信息把它开发而成的。
MyXls的下载地址:MyXls
 
下面通过2个例子来使用这个开源组件
生成单个Worksheet:
                        XlsDocument doc = new XlsDocument();
                        doc.FileName = "MyXlsWebAppDemo.xls";
                        Worksheet sheet = doc.Workbook.Worksheets.Add("Hello World Sheet");
                        Cell cell = sheet.Cells.Add(1, 1, "Hello,MyXls!");
                        for (int i = 2; i <= 10; i++)
                        {
                                cell = sheet.Cells.Add(i, 1, "51CTO五岁了!");
                                cell.Font.Weight = FontWeight.Bold;
                                cell.Font.ColorIndex =2;//白 红 绿 蓝 黄 粉红等等颜色,可以通过源代码了解颜色
                        }
                        
                        doc.Send();
生成的报表如下:
生成多个WorkSheet
XlsDocument xls = new XlsDocument();//新建一个xls文档
                        xls.FileName = "MyXlsDemo.xls";//设定Excel文件名

                        xls.SummaryInformation.Author = "Terry Li"; //填加Excel文件作者信息
                        xls.SummaryInformation.Subject = "MyXls Demo";//填加文件主题信息
                        xls.DocumentSummaryInformation.Company = "in2bits.org";//填加文件公司信息

string sheetName = "第一个Sheet Demo";#region    

                        string sheetName = "第一个Sheet Demo";
                        Worksheet sheet = xls.Workbook.Worksheets.Add(sheetName);//填加名为"第一个Sheet Demo"的sheet页
                        Cells cells = sheet.Cells;//Cells实例是sheet页中单元格(cell)集合
                        //单元格1-base
                        Cell cell = cells.Add(2, 3, "三");//设定第2行,第3例单元格的值
                        cell.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
                        cell.Font.FontName = "行楷";//设定字体
                        cell.Font.Height = 30 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
                        cell.UseBorder = true;//使用边框
                        cell.BottomLineStyle = 2;//设定边框底线为粗线
                        cell.BottomLineColor = Colors.Red;//设定颜色为红色
                        cell.RightLineStyle = 2;
                        cell.RightLineColor = Colors.Red;
                        
                        

                        //cell的格式还可以定义在一个xf对象中
                        XF cellXF = xls.NewXF();//为xls生成一个XF实例(XF是cell格式对象)
                        cellXF.HorizontalAlignment = HorizontalAlignments.Centered;//设定文字居中
                        cellXF.Font.FontName = "隶书";//设定字体
                        cellXF.Font.Height = 30 * 20;//设定字大小(字体大小是以 1/20 point 为单位的)
                        cellXF.UseBorder = true;//使用边框
                        cellXF.BottomLineStyle = 2;//设定边框底线为粗线
                        cellXF.BottomLineColor = Colors.Green;//设定颜色为绿色
                        cellXF.LeftLineStyle = 2; //设定边框左线为粗线
                        cellXF.LeftLineColor = Colors.Green;

                        cell = cells.Add(3, 3, "国", cellXF);//以设定好的格式填加cell

                        cellXF.Font.FontName = "仿宋_GB2312";
                        cellXF.BottomLineStyle = 2; //设定边框底线为粗线
                        cellXF.BottomLineColor = Colors.Blue;//设定颜色为蓝色
                        cellXF.RightLineStyle = 2;//设定边框右线为粗线
                        cellXF.RightLineColor = Colors.Blue;//设定颜色为蓝色
                        cellXF.LeftLineStyle = 0;
                        cell = cells.Add(4, 3, "志", 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 = 20 * 256;
                        //sheet.AddColumnInfo(colInfo2);

                        MergeArea meaA = new MergeArea(2, 3, 5, 7);//一个合并单元格实例(合并第2行、第5例 到 第3行、第7例)
                        sheet.AddMergeArea(meaA);//填加合并单元格
                        cellXF.VerticalAlignment = VerticalAlignments.Centered;
                        cellXF.Font.FontName = "隶书";
                        //cellXF.Font.Height = 48 * 20;
                        //cellXF.Font.Bold = true;
                        cellXF.Pattern = 1;//设定单元格填充风格。如果设定为0,则是纯色填充(无色),1代表没有间隙的实色
                        cellXF.PatternBackgroundColor = Colors.Red;//填充的底色
                        cellXF.PatternColor = Colors.Green;//设定填充线条的颜色
                        cell = cells.Add(2, 5, "晋/陈寿", cellXF);
                        #endregion

                        sheet.Cells.Merge(7, 9, 1, 4);
                        cell = cells.Add(7, 1, "MyXls 合并单元格 Demo");
                        cell.HorizontalAlignment = HorizontalAlignments.Centered;
                        cell.VerticalAlignment = VerticalAlignments.Centered;

                        for (int sheetNumber = 1; sheetNumber <= 4; sheetNumber++)
                        {
                                sheetName = "Sheet " + sheetNumber;
                                int rowMin = sheetNumber;
                                int rowCount = sheetNumber + 10;
                                int colMin = sheetNumber;
                                int colCount = sheetNumber + 10;
                                sheet = xls.Workbook.Worksheets.Add(sheetName);
                                cells = sheet.Cells;
                                for (int r = 0; r < rowCount; r++)
                                {
                                        if (r == 0)
                                        {
                                                for (int c = 0; c < colCount; c++)
                                                {
                                                        cells.Add(rowMin + r, colMin + c, "Column" + (c + 1)).Font.Bold = true;
                                                }
                                        }
                                        else
                                        {
                                                for (int c = 0; c < colCount; c++)
                                                {
                                                        int val = r + c;
                                                        cell = cells.Add(rowMin + r, colMin + c, val+ ":51CTO五岁了!");
                                                        if (val % 2 != 0)
                                                        {
                                                                cell.HorizontalAlignment = HorizontalAlignments.Centered;
                                                                cell.Font.FontName = "Times New Roman";
                                                                cell.Font.Underline = UnderlineTypes.Double;
                                                                cell.Font.ColorIndex = 2;
                                                                cell.Rotation = 45; //字符倾斜45度
                                                        }
                                                }
                                        }
                                }
                        }

                        xls.Send();//XlsDocument.SendMethods.Inline

优秀开源项目:MyXls相关推荐

  1. jeecg智能开发平台参与-2013年度中国优秀开源项目评比

    JEECG正在参与<2013年度中国十大优秀开源项目> 评比,如果大家觉得JEECG还不错, 请投出你宝贵的一票,给我们以支持吧!!! [目前排名第8位] https://code.csd ...

  2. 阿里巴巴Java“代码反潜机”P3C喜提首届中国优秀开源项目二等奖!

    12 月 12-14 日,由中国开源云联盟.中国电子技术标准化研究院和全国信标委云计算标准工作组主办的第八届中国云计算标准和应用大会在京举行. 聚焦企业上云和开源,大会公布了首届中国优秀开源项目的名单 ...

  3. Apache RocketMQ 荣获 2021 中国开源云联盟优秀开源项目

    为推动国内开源生态产业发展,中国开源云联盟(China Open Source Cloud League,简称"COSCL")组织开展了 2021 杰出开源贡献者.优秀开源项目.最 ...

  4. Android项目中最火最常用的优秀开源项目(很有用)

    Android项目中最火最常用的优秀开源项目 分类 详细 框架名称 简介 Star 数 最近 更新 UI 刷新 SmartRefreshLayout Android 智能下拉刷新框架 7.7k 1天 ...

  5. Windows Phone 7 优秀开源项目概览 来源:http://www.cnblogs.com/porscheyin/archive/2010/12/15/1906476.html...

    Windows Phone 7 优秀开源项目概览 在介绍正题之前,先向大家推荐一个非常好的网站,它的维护者是微软前Silverlight程序经理.此网站提供了关于Windows Phone 7的大量开 ...

  6. 寻优秀开源项目,百万程序员为你助力!

    在近三十年的科技创新里,开源已成为技术应用和行业数字化发展的基石,开发者极度依赖与关注开源,开源商业化也取得了巨大突破. 全球开源的大趋势下,中国正逐渐成为全球开源软件的主要使用者和核心贡献者,大力发 ...

  7. 安卓巴士总结了近百个Android优秀开源项目

    安卓巴士总结了近百个Android优秀开源项目 转自:http://sfshine.iteye.com/blog/1724962 Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了 ...

  8. Golang优秀开源项目汇总(持续更新。。。)

    Golang优秀开源项目汇总(持续更新...) 我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open ...

  9. 2013年度中国优秀开源项目

    2013年度中国优秀开源项目 当前63票 ACL 一个通用网络通信库,为C/ C++程序员提供高效.稳定.可靠.功能强大的开发通讯与服务器框架,以及各种常见应用协议的客户端库. 当前70票 Ansj中 ...

最新文章

  1. 8.4 matlab用户界面设计工具
  2. 微信小程序实现分类菜单 swiper分类菜单
  3. [css] 说说你对line-height是如何理解的?
  4. 卸载mysql8.0卸载程序_程序卸载失败,来使用微软官方的Windows卸载工具试试
  5. asp连接mysql oledb_provider=microsoft.jet.oledb……数据库连接方法的疑惑?
  6. LeetCode - Combinations
  7. java list move_Java中List最重要的特性
  8. 同一个事务里面对同一条数据做2次修改_MySQL事务与MVCC如何实现的隔离级别
  9. 两年时间,年薪从16到45,一个30岁程序猿的碎碎念
  10. Gephi教程:使用Graph Streaming 插件实现数据可视化
  11. 2020 博客之星评选【票数排行榜】每日更新
  12. kpi绩效考核流程图_松松客服KPI绩效考核表经验分享
  13. Speedoffice(word)插入表格,如何合并单元格?
  14. 选择云存储服务需要注意哪些事项?
  15. 【基础算法】试除法求约数(Acwing869题)
  16. SQL基础语法学习总结
  17. C语言之简单的字母大小写转换
  18. Web前端,HTML表格相关标签和属性,在网页中表格结构的显示
  19. 软件危机的定义?软件危机的7个典型表现和为什么会出现软件危机?
  20. 我的世界服务器无限凋零,我的世界:无法被完全隐形的六种生物,凋零:能不能给点面子?...

热门文章

  1. 『中级篇』Docker Cloud自动构建 Docker image(55)
  2. js if for 详解 获取元素方式 及一些js 基础知识
  3. 红外摄像机的功率究竟有多大
  4. springcloud(二):注册中心Eureka
  5. mysqldump主要参数探究
  6. SMTP 队列邮件对照表
  7. linux配置gprs modem
  8. 37 Reasons why your Neural Network is not working
  9. 李航书上隐马尔科夫模型案例的实验结果复现
  10. 机器学习实战的P264中代码对应的公式推导