zoukankan      html  css  js  c++  java
  • Excel生成报表之解决方案气泡图

    首先来看下用代码生成图表的效果:

    要生成这样效果的三维图表,如何来实现,先来了解微软Excel中生成这样的图表,需要哪些步骤。

    一、微软Excel中图表生成

    1.首先需要在单元格中填写图表数据源所需要数据。如上图中单元格数据Employee,Salary,Other等。

    2.填写完数据后,点击Excel工具栏中图表按钮。

    3.点击图表按钮后,会弹出图表导向的窗口,选择你需要生成的图表类型。

    这里选择的图表类型是气泡图。

    4.然后点击下一步,窗口如下:

    5.设置图表指定数据源并选择生成的系列是按行还是按列。

    6.设置好数据源后,点击窗口中完成按钮就能生出下面的效果图:

    生成出来的气泡图中系列点都是一样的颜色,如何设置为不一样的颜色,还需要最后一步工作。

    7.设置系列点的不同颜色。(注:该属性只对只有一个系列的图表有效。)

    双击图表中系列,会弹出如下的窗口:

    选中其中"Vary Colors by point"即可,选好后点击完成按钮。看设置属性后的效果图:

    和代码生成的效果图一致。

    二、用Acey.ExcelX组件实现

    首先需要导入名称空间。

    using System.Data;

    using Acey.ExcelX;

    using Acey.ExcelX.Charts;

    View Code
     1 /// <summary>
     2         /// 这个例子展示如何生成气泡图。
     3         /// </summary>
     4         public void CreateBubbleChart()
     5         {
     6             //创建工作薄对象。
     7             IWorkbook workbook = ExcelxApplication.CreateWorkbook();
     8 
     9             //获取工作薄对象中指定索引处工作表对象。
    10             IWorksheet worksheet = workbook.Worksheets[0];
    11 
    12             //创建DataTable对象。
    13             DataTable dt = new DataTable();
    14             //添加列该DataTable对象中。
    15             dt.Columns.Add("Employee Name");
    16             dt.Columns.Add("Salary", typeof(int));
    17             dt.Columns.Add("Other", typeof(int));
    18 
    19             //添加行该DataTable对象中。
    20             dt.Rows.Add(new object[3] { "Nelson", 40000, 20000 });
    21             dt.Rows.Add(new object[3] { "Young", 55500, 25000 });
    22             dt.Rows.Add(new object[3] { "Lambert", 25000, 10000 });
    23             dt.Rows.Add(new object[3] { "Johnson", 25050, 12000 });
    24             dt.Rows.Add(new object[3] { "Lee", 45332, 23000 });
    25 
    26             //导入该DataTable对象中数据到工作表指定位置。
    27             worksheet.ImportDataTable(dt, true, "A1");
    28 
    29             //获取该工作表对象中所有图表。
    30             IChartCollection charts = worksheet.Charts;
    31 
    32             //添加指定类型的图表到指定单元格区域并返回该新添加的图表对象。
    33             IChart chart = charts.Add(ChartType.Bubble, 1, 4, 16, 12);
    34 
    35             //获取工作表指定范围的单元格区域。
    36             IRange range = worksheet.Cells.CreateRange("A1:C6");
    37 
    38             //为该图表对象设置数据源。
    39             chart.SetSourceData(range, RowCol.Columns);
    40 
    41             //获取该图表对象所有的系列。
    42             ISeriesCollection seriesCollection = chart.SeriesCollection;
    43 
    44             //获取指定索引处的系列对象。
    45             ISeries series = seriesCollection[0];
    46 
    47             //表明是否每个数据点的颜色都不一样,该图表必须只能包括一个系列。
    48             series.IsColorVaried = true;
    49 
    50             //保存该工作薄为指定类型。
    51             workbook.SaveAs(@"d:\book1.xls", FileFormat.Excel97To2003);      
    52 
    53   }

    三、比较微软Excel生成图表和用Acey.ExcelX的实现。

    1.设置数据源

    微软Excel:需要手工填写数据源的每个单元格。

    Acey.ExcelX:worksheet.ImportDataTable(dt, true, "A1");(其中"A1"指定要导入在工作表中的指定开始位置),能很轻松将其二维数据的数据导入到工作表中,减小了填写单元格数据的工作量。

    在上篇文章http://www.cnblogs.com/happyfish78/archive/2012/11/02/2750687.html中我们例举的例子只需要初始化一个二维数据,用方法worksheet.ImportArray(objArray, 0, 0)导入数组数据到工作表中,也能很轻松实现数据导入。

    目前:数据导入已支持:数组、DataTable,DataView,DataRow和DataColumn,具体要用到哪种类型的对象,要看具体的业务、使用场景和用户的使用习惯等。

    2.选择要生成的图表类型

    微软Excel:需要选择图表类型。

    Acey.ExcelX:通过获取工作表中所有图表对象集合(IChartCollection charts = worksheet.Charts;),在集合中添加指定类型的图表

    IChart chart = charts.Add(ChartType.Bubble, 1, 4, 16, 12);其中ChartType.Bubble:表明要生成的图表是气泡图;

                                                                                              参数1代表图表在工作表中左上角的行索引位置,4代表图表在工作表中左上角的列索引位置,

                                                                                             16代表图表在工作表中右下角的行索引位置,4代表图表在工作表中右下角的列索引位置)

    就能很轻松将要生成的图表控制在指定的单元格范围中。返回值Chart对象,方便可以直接修改图表的其他属性。

    3.数据源设置:

    微软Excel:首先要需要选择数据源单元格范围,再选择系列按行还是按列生成。

    Acey.ExcelX:通过创建单元格范围的对象(IRange range = worksheet.Cells.CreateRange("A1:C6");)来创建数据源,再通过设置数据源

    chart.SetSourceData(range, RowCol.Columns);,其中参数range指定数据源单元格范围,RowCol枚举类型(包含Rows和Columns)来控制系列是按行或列来生成。

    RowCol枚举类型能让用户使用更方便。

    4.设置系列点不一样的颜色:

    微软Excel:双击系列,弹出系列窗口,在窗口中选中"Vary Colors by point"。

    Acey.ExcelX:首先获取图表中指定系列,通过ISeriesCollection seriesCollection = chart.SeriesCollection; ISeries series = seriesCollection[0];,其中ISeriesCollection seriesCollection = chart.SeriesCollection;是获取图表中所有系列,ISeries series = seriesCollection[0];是获取指定索引处的系列对象。如果您对Acey.ExcelX很熟悉的话,直接

    用一条语句:ISeries series = chart.SeriesCollection[0];就可以获取您想要操作的系列对象。

    获取好指定系列后,通过设置系列属性series.IsColorVaried = true;就能显示在Excel中选中"Vary Colors by point"一样的效果。

    四、总结

    无需安装微软Excel,用代码也能很轻松实现生成各种二维图表和三维图表的效果。 下载最新版本到www.aceyoffice.com。如果您想对Acey.ExcelX有进一步了解,在网站下载帮助和Demo。

  • 相关阅读:
    MySQL学习--标量函数之日期函数
    MySQL学习-- case表达式
    音视频推流方法与工具使用
    音视频基础知识
    音视频测试点
    postman处理二进制流文件
    postman脚本之时间处理
    移动性能测试之adb内存相关
    Proxychains安装
    Valgrind的安装及简单使用
  • 原文地址:https://www.cnblogs.com/happyfish78/p/2754604.html
Copyright © 2011-2022 走看看