Spire.XLS 控件为Excel创建图表

作者:ComponentCN   出处:控件中国网   2015-05-27 10:18:07   阅读:3

Spire.XLS是一款Excel文件操作和处理控件,可以创建、编辑、转换Excel文件,在很多时候客户需要在Excel文件里创建图表,Spire.XLS同样具备这种功能,在客户不需要安装Microsoft Excel的情况下,为存在的或者是新建的Excel文件创建图表。

怎么使用Spire.XLS for .NET来创建Excel图表?
在Microsoft Excel里可以生成饼图、列图、柱状图、线性图、雷达图等,使用Spire.XLS for .NET同样可以生成这些图表,该控件提供了非常简单的方法来创建图表。

1. 首先下载Spire.XLS for .NET试用版,并且安装,试用版是完整功能版只是有试用版水印
2. 使用控件提供的sheet.Charts.Add方法添加您需要创建的图表类型,并可以完全控件数据源以及图表的相关信息

下面是Spire.XLS for .NET在Excel里创建柱状图的事例代码:
using Spire.XLS;
using Spire.XLS.Charts;

namespace Spire.XLS.Sample
{
 class program
 {
  static void Main()
  {
   Application.Run(new Form1());
  }

  private void btnRun_Click(object sender, System.EventArgs e)
  {
   Workbook workbook = new Workbook();
   
   //Initailize worksheet
   workbook.CreateEmptySheets(1);
   Worksheet sheet = workbook.Worksheets[0];
   sheet.Name = "Chart data";
   sheet.GridLinesVisible = false;

   //Writes chart data
   CreateChartData(sheet);
            //Add a new  chart worsheet to workbook
   Chart chart = sheet.Charts.Add();

   //Set region of chart data
   chart.DataRange = sheet.Range["A1:C5"];
   chart.SeriesDataFromRange = false;

   //Set position of chart
   chart.LeftColumn = 1;
   chart.TopRow = 6;
   chart.RightColumn = 11;
   chart.BottomRow = 29;


   if (checkBox1.Checked)
   {
    chart.ChartType =  ExcelChartType.Bar3DClustered;
   }
   else
   {
    chart.ChartType = ExcelChartType.BarClustered;
   }

            //Chart title
   chart.ChartTitle = "Sales market by country";
   chart.ChartTitleArea.IsBold = true;
   chart.ChartTitleArea.Size = 12;

   chart.PrimaryCategoryAxis.Title = "Country";
   chart.PrimaryCategoryAxis.Font.IsBold = true;
   chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
   chart.PrimaryCategoryAxis.TitleArea.TextRotationAngle = 90;

   chart.PrimaryValueAxis.Title = "Sales(in Dollars)";
   chart.PrimaryValueAxis.HasMajorGridLines = false;
            chart.PrimaryValueAxis.MinValue = 1000;
   chart.PrimaryValueAxis.TitleArea.IsBold = true;


            foreach (Charts.ChartSerie cs in chart.Series)
            {
                cs.Format.Options.IsVaryColor = true;
                cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
            }

   chart.Legend.Position = LegendPositionType.Top;
   workbook.SaveToFile("Sample.xls");
   ExcelDocViewer(workbook.FileName);
  }

  private void CreateChartData(Worksheet sheet)
  {
   //Country
   sheet.Range["A1"].Value = "Country";
   sheet.Range["A2"].Value = "Cuba";
   sheet.Range["A3"].Value = "Mexico";
   sheet.Range["A4"].Value = "France";
   sheet.Range["A5"].Value = "German";

   //Jun
   sheet.Range["B1"].Value = "Jun";
   sheet.Range["B2"].NumberValue = 6000;
   sheet.Range["B3"].NumberValue = 8000;
   sheet.Range["B4"].NumberValue = 9000;
   sheet.Range["B5"].NumberValue = 8500;

   //Jun
   sheet.Range["C1"].Value = "Aug";
   sheet.Range["C2"].NumberValue = 3000;
   sheet.Range["C3"].NumberValue = 2000;
   sheet.Range["C4"].NumberValue = 2300;
   sheet.Range["C5"].NumberValue = 4200;

   //Style
   sheet.Range["A1:C1"].Style.Font.IsBold = true;
   sheet.Range["A2:C2"].Style.KnownColor = ExcelColors.LightYellow;
   sheet.Range["A3:C3"].Style.KnownColor = ExcelColors.LightGreen1;
   sheet.Range["A4:C4"].Style.KnownColor = ExcelColors.LightOrange;
   sheet.Range["A5:C5"].Style.KnownColor = ExcelColors.LightTurquoise;

   //Border
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].Color = Color.FromArgb(0, 0, 128);
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(0, 0, 128);
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(0, 0, 128);
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(0, 0, 128);
   sheet.Range["A1:C5"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;

   sheet.Range["B2:C5"].Style.NumberFormat = "\"$\"#,##0";
  }

  private void ExcelDocViewer( string fileName )
  {
   try
   {
    System.Diagnostics.Process.Start(fileName);
   }
   catch{}
  }

  private void btnAbout_Click(object sender, System.EventArgs e)
  {
   Close();
  }
 }
}

运行后的效果图:
bar-chart.png

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat