我们小组上个季度接手了一个项目其中需要实现创建excel文档的功能,寻找实现这个功能的控件的任务分配给了我,通过百度搜索我找到了一个免费的控件,它是由E-iceblue公司推出的spire.xls控件,接下来的一段时间我尝试地创建了多个应用程序来测试它所有的功能,说实话,这个控件功能很强大,它几乎包含了Microsoft Excel的所有功能,而且使用它不需要安装Microsoft的Office,另外里面的方法属性的命名基本上是和MS Excel中的功能相对应的,不清楚的功能可参考MS Excel就能找到相对于的属性和方法来实现,对于我这个新手来说短短的几周时间内就几乎尝试了所有的功能,目前我们已经把它应用到我们的项目中了。使用了它那么久,到目前为止还是很满意的,在这里就向大家分享一下。由于它有太多的功能,需要太多的时间一一列出,下面我先用一个制作报表的例子来展示它的部分功能, 更多的功能以后慢慢地再分享给大家。

1.创建一个空的excel 文档,获取它的第一个sheet

Workbook workbook = new Workbook();

Worksheet worksheet = workbook.Worksheets[];

2.制作报表的标题

static void MakeTitle(Worksheet worksheet)

     {

CellRange range=worksheet.Range["A1"];//获取A1单元格

range.Text = "职工人事信息表";//添加标题

range.Style.Font.IsBold = true;//设置标题字体加粗

range.Style.Font.Size = ;//设置字体大小为14

range.Style.HorizontalAlignment = HorizontalAlignType.Center;//设置标题水平居中

range.Style.VerticalAlignment = VerticalAlignType.Center;//设置标题垂直居中

worksheet.Range["A1:J1"].Merge();//合并A1到J1的单元格为一个

     }

效果图

3.添加报表数据,为了方便,在这里我使用了一个数据库中的一个datatable的数据作为报表数据,当然你也可以分别为一个个单元格赋值

例如:如果是文本,可以使用

worksheet.Range["A1"].Text=data1;

如果是数字,可以使用

worksheet.Range["A1"].NumberValue=data2;

并设置它的输出格式

worksheet.Range["C5"].NumberFormat = "#,##0.00";

下面我就附上我如何添加报表数据的代码:

static void AddReportData(Worksheet worksheet)

   {   

worksheet.InsertDataTable(dataTable, true, , );//从第二行第一列的单元格开始插入一个dataTable,并将列头的数据也添加

CellStyle style = worksheet.Range["A2:J2"].Style;//获取A2到J2的单元格的格式

style.Font.Color = Color.White;//设置字体颜色为白色

style.KnownColor = ExcelColors.Green;//设置单元格的背景颜色为绿色

style.Font.IsBold = true;//设置字体加粗

style.HorizontalAlignment = HorizontalAlignType.Center;//设置文本水平居中

style.VerticalAlignment = VerticalAlignType.Center;//设置文本垂直居中

style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;//设置左边的border

style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;//设置右边的border

style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;//设置上面的border

style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;//设置下面的border

CellStyle oddStyle = worksheet.Workbook.Styles.Add("oddStyle");//创建一个style并命名为"oddStyle"

oddStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;

oddStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;

oddStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;

oddStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

oddStyle.KnownColor = ExcelColors.LightGreen1;

CellStyle evenStyle = worksheet.Workbook.Styles.Add("evenStyle");//创建一个style并命名为"evenStyle"

evenStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;

evenStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;

evenStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;

evenStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

evenStyle.KnownColor = ExcelColors.LightTurquoise;

        //为A3到J20的单元格设置格式,如果是奇数行使用oddStyle,如果是偶数行使用evenStyle

            foreach (CellRange range in worksheet.Range["A3:J20"].Rows)

            {

                if (range.Row %  == )

                    range.CellStyleName = evenStyle.Name;

                else

                    range.CellStyleName = oddStyle.Name;

            }

         worksheet.AllocatedRange.AutoFitColumns();//自动调整列的宽度去适应单元格的数据

         worksheet.AllocatedRange.AutoFitRows();//自动调整行的高度去适应单元格的数据

    }

效果图

4.添加过滤器

worksheet.AutoFilters.Range=worksheet.Range["A2:J20"];

效果图

5.到这里这个报表就做好了,接下来把它保存到一个excel文档里就可以了,它可以保存Excel2003,Excel2007,Excel2010,Excel2013格式的文档

string output = "Report.xlsx";

workbook.SaveToFile(output,ExcelVersion.Version2010);

利用免费的Spire.XLS控件制作Excel报表的更多相关文章

  1. C/S模式开发中如何利用WebBrowser控件制作导航窗体

    原文:C/S模式开发中如何利用WebBrowser控件制作导航窗体 转自: CSDN 相信不少同学们都做过MIS系统的开发,今天这里不讨论B/S模式开发的问题.来谈谈winform开发.用过市面上常见 ...

  2. 利用Aspose.Cell控件导入Excel非强类型的数据

    导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...

  3. 免费使用的图表控件XML/SWF Charts 5.08

    免费使用的图表控件XML/SWF Charts 5.08 http://www.pin5i.com/showtopic-26053.html 10个免费的在线统计图表工具 http://paranim ...

  4. Android中如何利用attrs和styles定义控件

    一直有个问题就是,Android中是如何通过布局文件,就能实现控件效果的不同呢?比如在布局文件中,我设置了一个TextView,给它设置了 textColor,它就能够改变这个TextView的文本的 ...

  5. 利用来JS控制页面控件显示和隐藏有两种方法

    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一:  1 2 document.getEle ...

  6. C#使用splitContainer控件制作收缩展开面板

    C#使用splitContainer控件制作收缩展开面板 原创 2011年07月19日 17:18:02 标签: c# / object / 扩展 / 测试 15690         最近对Squi ...

  7. 使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    时光飞逝,生活.工作.业余研究总是在不停忙碌着,转眼快到月底,该月的博客文章任务未完,停顿回忆一下,总结一些经验以及好的东西出来,大家一起分享一下.本文章主要介绍报表的生成,基于Aspose.Cell ...

  8. 使用Aspose.Cell控件实现Excel高难度报表的生成(三)

    在之前几篇文章中,介绍了关于Apsose.cell这个强大的Excel操作控件的使用,相关文章如下: 使用Aspose.Cell控件实现Excel高难度报表的生成(一) 使用Aspose.Cell控件 ...

  9. (转)使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    本文章主要介绍报表的生成,基于Aspose.Cell控件的报表生成.谈到报表,估计大家都有所领悟以及个人的理解,总的来说,一般的报表生成,基本上是基于以下几种方式:一种是基于微软Excel内置的引擎来 ...

随机推荐

  1. Hibernate criteria 增加排序项

  2. vue-cli 组件的使用

    开始项目之前,先了解如何创建项目: http://www.cnblogs.com/pearl07/p/6247389.html 1,项目目录结构(路由是后来建的,将在下一篇使用路由,此处可忽略). 2 ...

  3. 如果你想真正了解Struts2,不妨可以进来看看

    首先我们就一起来认识认识Struts2到底是什么?作为框架,它又是用来处理哪些问题的呢?正所谓脚踏实地走,即时离梦想会远一点,但却很真实,那我们就一步一步的来了解Struts2吧!      一.既然 ...

  4. 学习笔记——SQLite介绍

    简介:Google为android的较大数据的处理提供了SQLlite, 他在数据存储.管理.维护.等各方面都相当出色功能也非常强大. 1.创建数据库 Android 为了让我们能够更加方便地管理数据 ...

  5. sessionStorage/localStorage 本地存储

      if(!sessionStorage.getItem('vote2')||sessionStorage.getItem('vote2')==NaN)sessionStorage.setItem(' ...

  6. C#_技巧:.net下C++调用C#的dll

    C#编译一个dll,比如命名空间为Csharp,里面有个类A,字段x,产生一个Csharp.dll C++ 配置,让C++支持CLR C++调用方法: #include <iostream> ...

  7. ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)

    ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求 ...

  8. ABP理论学习之多租户

    返回总目录 本篇目录 什么是多租户 ABP中的多租户 什么是多租户 维基百科:"软件多租户是指一种软件架构,在这种软件架构中,软件的一个实例运行在服务器上并且为多个租户服务".一个 ...

  9. 剑指Offer面试题:32.数字在排序数组中出现的次数

    一.题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 二.解题思路 2 ...

  10. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...