【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html
.NET读写Excel工具Spire.Xls使用文章目录:http://www.cnblogs.com/asxinyu/p/4374032.html
前一篇文章:“.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制”给大家介绍了Spire.XLS对数据的控制相关功能,这一篇给大家介绍Spire.XLS最大的亮点所在,C#控制Excel生成图表。将介绍C#生成不同类型图表的方法,并介绍Excel图表的相关操作,如调整大小,保存图片等操作的方法。
1.Excel中的图表
我们生活的这个世界是丰富多彩的,几乎所有的知识都来自于视觉。也许无法记住一连串的数字,以及它们之间的关系和趋势。但是可以很轻松地记住一幅图画或者一个曲线。因此由于使用图表,会使得用Excel编制的工作表更易于理解和交流。Excel具有许多高级的制图功能,同时使用起来也非常简便。在本章中,我们将学习到建立一张简单的图表,再进行修饰,使图表更加精致,以及如何为图形加上背景、图注、正文等等。Excel中图表是指将工作表中的数据用图形表示出来。例如:将各地区每周的销售用柱形图显示出来,见图8-1的显示。图表可以使数据更加有趣、吸引人、易于阅读和评价。它们也可以帮助我们分析和比较数据[1]。如下图所示的图表,看数据多累,看图表就一目了然。。。
2.C#创建Excel图表方法
2.1 Spire.Xls的图表类
在Spire.Xls组件中,生成图表已经非常简化了。只需要一个核心的Chart类,就可以增加图表并进行辅助的一些设置。Spire.Xls定义支持的图表类型,在枚举ExcelChartType类型中。目前一共有74种类型,可以使用对象浏览器大概看一下:
在实际的使用过程中,添加Excel图表主要有以下几个过程:
1.给指定的Sheet添加需要的Excel图表的类型;
2.设置图表所需要的数据范围;
3.设置图表的位置以及标题;
4.设置系列图表以及坐标轴的值。
下面将使用C#和Spire.Xls组件做一个生成饼状图和折线图的例子,看看基本的使用过程。
2.2 生成饼状图
在工作中如果遇到需要计算总费用或金额的各个部分构成比例的情况,一般都是通过各个部分与总额相除来计算,而且这种比例表示方法很抽象,我们可以使用一种饼状图表工具,能够直接以图形的方式直接显示各个组成部分所占比例,在Excel中可以很方便的制作饼状图表。Spire.Xls中饼状图类型是ExcelChartType类中的Pie和Pie3D,为了效果很好看,我们可以使用3D的类型。
- //创建饼状图表
- Chart chart = sheet.Charts.Add(ExcelChartType.Pie);
- //设置图表的数据范围,使用的也是和前面单元格获取的Range对象
- chart.DataRange = sheet.Range["B2:B5"];
- chart.SeriesDataFromRange = false;
- //设置图表的位置
- chart.LeftColumn = ;//图表左边列
- chart.TopRow = ;//图表上部的行
- chart.RightColumn = ;//图表右边列
- chart.BottomRow = ;//图表底部行
- //图表标题
- chart.ChartTitle = "饼形图例子";
- //设置字体
- chart.ChartTitleArea.IsBold = true;
- chart.ChartTitleArea.Size = ;
- //初始化图例
- Spire.Xls.Charts.ChartSerie cs = chart.Series[];
- //图表的标签目录数据
- cs.CategoryLabels = sheet.Range["A2:A5"];
- //图表的主要值,也就是饼状图的数据
- cs.Values = sheet.Range["B2:B5"];
如下所示的效果:
2.3 生成折线图
线图是用直线段将各数据点连接起来而组成的图形,以折线方式显示数据的变化趋势。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。在折线图中,类别数据沿水平轴均匀分布,所有值数据沿垂直轴均匀分布。在折线图中,数据是递增还是递减、增减的速率、增减的规律(周期性、螺旋性等)、峰值等特征都可以清晰地反映出来。所以,折线图常用来分析数据随时间的变化趋势,也可用来分析多组数据随时间变化的相互作用和相互影响。
使用Spire.Xls绘制折线图过程和上面的类型。但如果图例较多,就是设置稍微复杂一点。看一个例子:
- //给Sheet对象添加一个图表对象,可以直接添加类型,也可以单独用ChartType赋值来添加
- Chart chart = sheet.Charts.Add();
- chart.ChartType = ExcelChartType.Line3D;
- //设置图表的数据范围
- chart.DataRange = sheet.Range["A1:E5"];
- //设置图表的保存位置,这个基本都差不多
- chart.LeftColumn = ;
- chart.TopRow = ;
- chart.RightColumn = ;
- chart.BottomRow = ;
- //图表标题
- chart.ChartTitle = "折线图例子";
- //设置字体加粗和大小
- chart.ChartTitleArea.IsBold = true;
- chart.ChartTitleArea.Size = ;
- //设置横坐标的标题
- chart.PrimaryCategoryAxis.Title = "月份";
- chart.PrimaryCategoryAxis.Font.IsBold = true;
- chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
- //设置纵坐标,也就是值 的标题
- chart.PrimaryValueAxis.Title = "销售额";
- chart.PrimaryValueAxis.HasMajorGridLines = false;
- chart.PrimaryValueAxis.TitleArea.TextRotationAngle = ;
- chart.PrimaryValueAxis.MinValue = ;
- chart.PrimaryValueAxis.TitleArea.IsBold = true;
- //循环绘制不同国家的销售额折线图,有多个系列
- foreach (Spire.Xls.Charts.ChartSerie cs in chart.Series)
- {
- cs.Format.Options.IsVaryColor = true;
- cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
- }
实际的效果和原始数据如下图所示:
其他图表的过程都类似,可以在帮助文档中找到相关例子。
3.C#设置Excel图表
3.1 将图表保存为图片
Excel生成的图表是可以保存为图片的。在Spire.XLS中,这些操作已经变得非常简单。首先获取Workbook对象的SaveChartAsImage方法获取指定sheet中的所有图表。然后循环将图片对象依次保存即可,下面是主要代码:
- Workbook workbook = new Workbook();
- workbook.LoadFromFile("chart.xlsx", ExcelVersion.Version2010);
- Worksheet sheet=workbook.Worksheets[];
- Image[] imgs = workbook.SaveChartAsImage(sheet);
- for (int i = ; i < imgs.Length; i++)
- {
- imgs[i].Save(string.Format("img-{0}.png", i), ImageFormat.Png);
- }
3.2 位置调整
Excel中的图表的位置已经在前面介绍过,还有一个可以调整大小的功能。使用Width和Height方法直接设置大小即可。
- chart.Width = ;
- chart.Height = ;
上面就是一些常规的操作和使用,总的来说还是比较简单,如果需要比较细致的,可以查看API文档,根据方法来所要的功能来找,实现起来也会很容易的。
[1].http://baike.haosou.com/doc/5449555-5687924.html
【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能的更多相关文章
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...
- 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- .NET读写Excel工具Spire.Xls使用(1)入门介绍
原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式 ...
- NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF
首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll 最好使用使用NuGet下载 , ...
- .NET读写Excel工具Spire.XlS使用(DataExport )
Introduction E-ICEBLUE is developing office.net component, the main products include Spire.Doc, Spir ...
- 【目录】C#操作Excel组件Spire.XLS系列文章目录
本博客所有文章分类的总目录链接:http://www.cnblogs.com/asxinyu/p/4288836.html 1.C#操作Excel组件Spire.XLS文章目录 1.[原创].NET读 ...
- Spire.XLS 在程序中直接打印excel
上代码 if (tbPrintSetBindingSource.Current == null) return; var item_TbPrintSet = tbPrintSetBindingSour ...
随机推荐
- Oozie命令行常用命令汇总[转]
Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- 使用SQL语句逐条更新每条记录
有些时候,我们希望同时更新表中的多条记录,但更新的值不一样. declare @i int declare @j int declare @phone varchar(20) set @j=1 sel ...
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...
- springmvc和struts2的差别
springmvc和struts2的区别相关内容 1.spring mvc的入口是servlet,而struts2是filter filter功能:用户可以改变一个request和修改一个resp ...
- java - Stack栈和Heap堆的区别
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆. 在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储 ...
- linux安装oracle 11g rac
安装oracle 11gR2 RAC 一.网络规划及安装虚拟主机 主机名 主机版本 Ip rac1.localdomain Redhat 6.5 RAC节点1 192.168.100.11 rac2. ...
- hander消息机制原理
基本原理 线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程通过MainLoope ...
- Java虚拟机5:Java垃圾回收(GC)机制详解
哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象.那么如何找到这些对象? 1.引用计数法 这个算法的实现是,给对象中添 ...
- mvvm的优势
之前在项目中有个功能,是根据数据模型生成页面,然后页面变动之后,再同步到数据模型之中. 当时用的jquery写的,一点一点的控制,整个功能写下来.测试,花了很长时间,而且还担心出bug. 现在用mvv ...