Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2478381
  • 博文数量: 103
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1033
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
文章分类

全部博文(103)

文章存档

2019年(49)

2018年(45)

2017年(9)

我的朋友

分类: C#/.net

2019-05-10 15:36:03

相较于数据,图表更能直观的体现数据的变化趋势。在数据表格中,同一数据值,可能同时代表不同的数据分类,表现在图表中则是一个数据体现在多个数据分类标签下。通常生成的图表一般默认只有一种分类标签,下面的方法将通过编程的方式来介绍在Excel中如何来生成含多层分类标签的图表。

使用工具:Spire.XLS for .NET

1.通过官网下载安装包--解压-安装。注意在程序中添加引用Spire.Xls.dll,dll文件在安装路径下的bin文件夹中。

2.通过 Nuget获取

添加引用完成后,如下图:

C#示例代码

  1. using Spire.Xls;
  2. using Spire.Xls.Charts;
  3. using System.Drawing;

  4. namespace ChartWithMultiLevelCategoryLabels_XLS
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             //创建Workbook实例,获取工作表
  11.             Workbook wb = new Workbook();
  12.             Worksheet sheet = wb.Worksheets[0];

  13.             //写入数据到工作表
  14.             sheet.Range["A2"].Text = "出口前";
  15.             sheet.Range["A5"].Text = "出口后";
  16.             sheet.Range["B1"].Text = "年份";
  17.             sheet.Range["B2"].Text = "2017年";
  18.             sheet.Range["B6"].Text = "2018年";
  19.             sheet.Range["C1"].Text = "季度";
  20.             sheet.Range["C2"].Text = "1季度";
  21.             sheet.Range["C3"].Text = "2季度";
  22.             sheet.Range["C4"].Text = "3季度";
  23.             sheet.Range["C5"].Text = "4季度";
  24.             sheet.Range["C6"].Text = "1季度";
  25.             sheet.Range["C7"].Text = "2季度";
  26.             sheet.Range["C8"].Text = "3季度";
  27.             sheet.Range["C9"].Text = "4季度";
  28.             sheet.Range["D1"].Text = "季度产量\n(万吨)";
  29.             sheet.Range["D2"].Value = "1.56";
  30.             sheet.Range["D3"].Value = "2.3";
  31.             sheet.Range["D4"].Value = "3.21";
  32.             sheet.Range["D5"].Value = "3.5";
  33.             sheet.Range["D6"].Value = "4.8";
  34.             sheet.Range["D7"].Value = "5.2";
  35.             sheet.Range["D8"].Value = "5.79";
  36.             sheet.Range["D9"].Value = "5.58";
  37.             
  38.             //合并单元格,设置单元格对齐方式
  39.             sheet.Range["A2:A4"].Merge();
  40.             sheet.Range["A5:A9"].Merge();
  41.             sheet.Range["B2:B5"].Merge();
  42.             sheet.Range["B6:B9"].Merge();
  43.             sheet.Range["A1:D9"].Style.HorizontalAlignment = HorizontalAlignType.Center;
  44.             sheet.Range["A1:D9"].Style.VerticalAlignment = VerticalAlignType.Center;


  45.             //添加柱状图表
  46.             Chart chart = sheet.Charts.Add(ExcelChartType.LineMarkers);
  47.             chart.ChartTitle = "季度产量(万吨)";//设置图表标题
  48.             chart.PlotArea.Fill.FillType = ShapeFillType.NoFill; //不填充绘图区域(默认填充灰色)
  49.             chart.Legend.Delete();//删除图例

  50.             //指定柱状图表在工作表中的位置及宽度
  51.             chart.LeftColumn = 5;
  52.             chart.TopRow = 1;
  53.             chart.RightColumn = 14;

  54.             //设置图表系列数据来源
  55.             chart.DataRange = sheet.Range["D2:D9"];
  56.             chart.SeriesDataFromRange = false;
  57.             chart.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
  58.             chart.Series[0].Format.LineProperties.Color = Color.BlueViolet;

  59.             //设置系列分类标签数据来源
  60.             ChartSerie serie = chart.Series[0];
  61.             serie.CategoryLabels = sheet.Range["A2:C9"];


  62.             //显示多层分类标签
  63.             chart.PrimaryCategoryAxis.MultiLevelLable = true;

  64.             //保存文档
  65.             wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);
  66.             System.Diagnostics.Process.Start("output.xlsx");
  67.         }
  68.     }
  69. }


图表创建结果:



(本文完)

阅读(1657) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册