您的位置:首页 > 编程语言 > C#

Excel中 如何使用不连贯的数据来创建图表(C#)

2016-09-23 16:54 756 查看
Excel中如何使用不连贯的数据来创建图表(C#)
我们一般在Excel中添加图表时,是直接选中所有数据区域,然后在点击菜单栏里插入按钮,选中要插入的图表类型,然后Excel会根据你选择的图表类型自动插入图表。像下图这样:



如果不像上图中那样使用所有的数据,只用其中的某几行数据来创建图表呢?这篇文章给大家分享一下如何实现这个功能的方法,这里我使用了一个Excel组件Spire.XLS(你可以从这里下载)。

下图是我的原始Excel文档,我将用第2、3、5、6、8、9行数据来创建图表,为了方便观看我使用的是哪些数据,这里我将第4、7行设置成了空白行,当然你的Excel文档里面可以不用设置空白行。



详细步骤如下:

步骤1:加载Excel文档并获取第一个工作表。

Workbook book = new Workbook();
book.LoadFromFile("11班同学半期考试与期末考试总成绩比较表.xlsx");
Worksheet sheet = book.Worksheets[0];
步骤2:插入一个条形图表并设置条形图表在工作表中的位置。

Chart chart = sheet.Charts.Add(ExcelChartType.ColumnClustered);
chart.SeriesDataFromRange = false;
//设置图表位置
chart.LeftColumn = 5;
chart.TopRow = 1;
chart.RightColumn = 13;
chart.BottomRow = 10;
步骤3:添加两个系列(Series)到图表,调用XlsRange.AddCombinedRange(CellRange cr)方法来为图表设置多个不连贯的数据范围。

//添加第一个Series
var cs1 = (ChartSerie)chart.Series.Add();
cs1.Name = sheet.Range["B1"].Value;
cs1.CategoryLabels = sheet.Range["A2:A3"].AddCombinedRange(sheet.Range["A5:A6"]).AddCombinedRange(sheet.Range["A8:A9"]);
cs1.Values = sheet.Range["B2:B3"].AddCombinedRange(sheet.Range["B5:B6"]).AddCombinedRange(sheet.Range["B8:B9"]);
cs1.SerieType = ExcelChartType.ColumnClustered;

//添加第二个Series
var cs2 = (ChartSerie)chart.Series.Add();
cs2.Name = sheet.Range["C1"].Value;
cs2.CategoryLabels = cs2.CategoryLabels =sheet.Range["A2:A3"].AddCombinedRange(sheet.Range["A5:A6"]).AddCombinedRange(sheet.Range["A8:A9"]);
cs2.Values = sheet.Range["C2:C3"].AddCombinedRange(sheet.Range["C5:C6"]).AddCombinedRange(sheet.Range["C8:C9"]);
cs2.SerieType = ExcelChartType.ColumnClustered;


步骤4:保存文档。

book.SaveToFile("图表.xlsx", FileFormat.Version2010);

效果图:



图表中的网格线不好看?加上下面这句代码让它不显示就OK:

chart.PrimaryValueAxis.HasMajorGridLines = false;



完整代码奉上:

using Spire.Xls;
using Spire.Xls.Charts;

namespace 使用不连贯数据创建图表
{
class Program
{
static void Main(string[] args)
{
Workbook book = newWorkbook();
book.LoadFromFile("11班同学半期考试与期末考试总成绩比较表.xlsx");
Worksheet sheet = book.Worksheets[0];

Chart chart = sheet.Charts.Add(ExcelChartType.ColumnClustered);
chart.SeriesDataFromRange = false;
//chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.LeftColumn = 5;
chart.TopRow = 1;
chart.RightColumn = 13;
chart.BottomRow = 10;

var cs1 = (ChartSerie)chart.Series.Add();
cs1.Name = sheet.Range["B1"].Value;
cs1.CategoryLabels = sheet.Range["A2:A3"].AddCombinedRange(sheet.Range["A5:A6"]).AddCombinedRange(sheet.Range["A8:A9"]);
cs1.Values = sheet.Range["B2:B3"].AddCombinedRange(sheet.Range["B5:B6"]).AddCombinedRange(sheet.Range["B8:B9"]);
cs1.SerieType = ExcelChartType.ColumnClustered;

var cs2 = (ChartSerie)chart.Series.Add();
cs2.Name = sheet.Range["C1"].Value;
cs2.CategoryLabels = sheet.Range["A2:A3"].AddCombinedRange(sheet.Range["A5:A6"]).AddCombinedRange(sheet.Range["A8:A9"]);
cs2.Values = sheet.Range["C2:C3"].AddCombinedRange(sheet.Range["C5:C6"]).AddCombinedRange(sheet.Range["C8:C9"]);
cs2.SerieType = ExcelChartType.ColumnClustered;

chart.ChartTitle = string.Empty;

book.SaveToFile("图表.xlsx", FileFormat.Version2010);
}
}
}


感谢您的阅读!

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# Excel 图表
相关文章推荐