经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# 创建含多层分类标签的Excel图表 - E-iceblue
来源:cnblogs  作者:E-iceblue  时间:2019/4/9 9:40:46  对本文有异议

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

 

使用工具Spire.XLS for .NET

1.通过官网(https://www.e-iceblue.cn/Introduce/Spire-XLS-NET.html )下载安装包--解压-安装。在程序中添加引用Spire.XLS.dll,dll文件在安装路径下的bin文件夹中。

2.通过 Nuget 官网。(http://www.nuget.org/packages/Spire.XLS/

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

C#示例代码

 Step1:创建工作表

  1. //创建Workbook实例,获取工作表
  2. Workbook wb = new Workbook();
  3. Worksheet sheet = wb.Worksheets[0];

Step2:写入数据到表格

  1. sheet.Range["A2"].Text = "出口前";
  2. sheet.Range["A5"].Text = "出口后";
  3. sheet.Range["B1"].Text = "年份";
  4. sheet.Range["B2"].Text = "2017年";
  5. sheet.Range["B6"].Text = "2018年";
  6. sheet.Range["C1"].Text = "季度";
  7. sheet.Range["C2"].Text = "1季度";
  8. sheet.Range["C3"].Text = "2季度";
  9. sheet.Range["C4"].Text = "3季度";
  10. sheet.Range["C5"].Text = "4季度";
  11. sheet.Range["C6"].Text = "1季度";
  12. sheet.Range["C7"].Text = "2季度";
  13. sheet.Range["C8"].Text = "3季度";
  14. sheet.Range["C9"].Text = "4季度";
  15. sheet.Range["D1"].Text = "季度产量\n(万吨)";
  16. sheet.Range["D2"].Value = "1.56";
  17. sheet.Range["D3"].Value = "2.3";
  18. sheet.Range["D4"].Value = "3.21";
  19. sheet.Range["D5"].Value = "3.5";
  20. sheet.Range["D6"].Value = "4.8";
  21. sheet.Range["D7"].Value = "5.2";
  22. sheet.Range["D8"].Value = "5.79";
  23. sheet.Range["D9"].Value = "5.58";

Step3:合并单元格并设置单元格对齐方式

  1. sheet.Range["A2:A4"].Merge();
  2. sheet.Range["A5:A9"].Merge();
  3. sheet.Range["B2:B5"].Merge();
  4. sheet.Range["B6:B9"].Merge();
  5. sheet.Range["A1:D9"].Style.HorizontalAlignment = HorizontalAlignType.Center;
  6. sheet.Range["A1:D9"].Style.VerticalAlignment = VerticalAlignType.Center;

Step4:添加图表到Excel

  1. //添加柱状图表
  2. Chart chart = sheet.Charts.Add(ExcelChartType.LineMarkers);
  3. chart.ChartTitle = "季度产量(万吨)";//设置图表标题
  4. chart.PlotArea.Fill.FillType = ShapeFillType.NoFill; //不填充绘图区域(默认填充灰色)
  5. chart.Legend.Delete();//删除图例
  6. //指定柱状图表在工作表中的位置及宽度
  7. chart.LeftColumn = 5;
  8. chart.TopRow = 1;
  9. chart.RightColumn = 14;
  10. //设置图表系列数据来源
  11. chart.DataRange = sheet.Range["D2:D9"];
  12. chart.SeriesDataFromRange = false;
  13. chart.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
  14. chart.Series[0].Format.LineProperties.Color = Color.BlueViolet;
  15. //设置系列分类标签数据来源
  16. ChartSerie serie = chart.Series[0];
  17. serie.CategoryLabels = sheet.Range["A2:C9"];

Step5:设置是否显示多层分类标签

  1. chart.PrimaryCategoryAxis.MultiLevelLable = true;

Step6: 保存文档

  1. wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);

 

图表创建结果:

 

全部代码:

  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. sheet.Range["A2:A4"].Merge();
  39. sheet.Range["A5:A9"].Merge();
  40. sheet.Range["B2:B5"].Merge();
  41. sheet.Range["B6:B9"].Merge();
  42. sheet.Range["A1:D9"].Style.HorizontalAlignment = HorizontalAlignType.Center;
  43. sheet.Range["A1:D9"].Style.VerticalAlignment = VerticalAlignType.Center;
  44. //添加柱状图表
  45. Chart chart = sheet.Charts.Add(ExcelChartType.LineMarkers);
  46. chart.ChartTitle = "季度产量(万吨)";//设置图表标题
  47. chart.PlotArea.Fill.FillType = ShapeFillType.NoFill; //不填充绘图区域(默认填充灰色)
  48. chart.Legend.Delete();//删除图例
  49. //指定柱状图表在工作表中的位置及宽度
  50. chart.LeftColumn = 5;
  51. chart.TopRow = 1;
  52. chart.RightColumn = 14;
  53. //设置图表系列数据来源
  54. chart.DataRange = sheet.Range["D2:D9"];
  55. chart.SeriesDataFromRange = false;
  56. chart.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
  57. chart.Series[0].Format.LineProperties.Color = Color.BlueViolet;
  58. //设置系列分类标签数据来源
  59. ChartSerie serie = chart.Series[0];
  60. serie.CategoryLabels = sheet.Range["A2:C9"];
  61. //显示多层分类标签
  62. chart.PrimaryCategoryAxis.MultiLevelLable = true;
  63. //保存文档
  64. wb.SaveToFile("output.xlsx", ExcelVersion.Version2013);
  65. System.Diagnostics.Process.Start("output.xlsx");
  66. }
  67. }
  68. }
View Code

 

(本文完)

 

原文链接:http://www.cnblogs.com/Yesi/p/10670988.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号