ReoGrid 支持多种图表类型,可以作为浮动对象显示在工作表上。图表在其数据源发生更改时会自动更新,并且会随 Excel 文件一起保存/加载。

命名空间

using unvell.ReoGrid.Chart;
using unvell.ReoGrid.Drawing;

可用的图表类型

示例说明
ColumnChart238垂直柱状图
BarChart274水平条形图
LineChart235折线图
AreaChart341填充面积图
Pie2DChart2392D 饼图
DoughnutChart430环形图

创建图表

步骤 1:准备数据

var sheet = grid.CurrentWorksheet;

sheet["A2"] = new object[,] {
    { null, 2008, 2009, 2010, 2011, 2012 },
    { "City 1", 3, 2, 4, 2, 6 },
    { "City 2", 7, 5, 3, 6, 4 },
    { "City 3", 13, 10, 9, 10, 9 },
};

步骤 2:定义范围

var dataRange = sheet.Ranges["B3:F5"];           // 数值数据
var serialNamesRange = sheet.Ranges["A3:A5"];    // 系列名称(行标题)
var categoryNamesRange = sheet.Ranges["B2:F2"];  // 类别名称(列标题)

步骤 3:创建图表

var chart = new ColumnChart
{
    Location = new Graphics.Point(220, 160),
    Size = new Graphics.Size(400, 260),
    Title = "Column Chart Sample",
    DataSource = new WorksheetChartDataSource(sheet, serialNamesRange, dataRange)
    {
        CategoryNameRange = categoryNamesRange,
    },
};

步骤 4:添加到工作表

sheet.FloatingObjects.Add(chart);

图表属性

所有图表类型都继承自 Chart 基类:

属性类型默认值说明
Titlestring"Chart"图表标题文本
DataSourceWorksheetChartDataSourcenull图表的数据源
ShowLegendbooltrue是否显示图例
PrimaryLegendChartLegend图表的图例实例
DataSerialStylesDataSerialStyleCollection每个数据系列的样式
LocationGraphics.Point工作表上的左上角位置
SizeGraphics.Size宽度和高度
BoundsGraphics.Rectangle位置和大小的组合
Visiblebooltrue图表是否可见

事件

事件说明
ChartDataChanged图表数据更新时触发
DataSourceChanged数据源更改时触发

数据源

WorksheetChartDataSource

将工作表数据连接到图表:

// 使用范围的构造函数
var dataSource = new WorksheetChartDataSource(sheet, serialNamesRange, dataRange)
{
    CategoryNameRange = categoryNamesRange,
};

// 使用字符串地址的构造函数
var dataSource = new WorksheetChartDataSource(sheet, "A3:A5", "B3:F5")
{
    CategoryNameRange = sheet.Ranges["B2:F2"],
};

构造函数

构造函数说明
WorksheetChartDataSource(worksheet)空数据源
WorksheetChartDataSource(worksheet, serialNamesRange, dataRange)使用系列名称和数据范围
WorksheetChartDataSource(worksheet, serialNamesRange, dataRange, rowOrColumn)指定系列按行还是按列排列

属性

属性类型说明
WorksheetWorksheet包含数据的工作表
CategoryNameRangeRangePosition包含类别标签的范围
SerialCountint数据系列的数量(只读)
CategoryCountint类别的数量(只读)
SerialsWorksheetChartDataSerialCollection数据系列集合

方法

方法说明
GetCategoryName(int index)按索引获取类别标签
AddSerial(worksheet, labelAddress, dataRange)手动添加数据系列
GetSerial(int index)获取特定数据系列

事件

事件说明
DataChanged源数据更改时触发

WorksheetChartDataSerial

表示图表中的一个数据系列:

属性类型说明
WorksheetWorksheet包含数据的工作表
DataRangeRangePosition包含系列数据的范围
LabelAddressCellPosition系列标签单元格的地址
Labelstring系列名称(只读)
Countint数据点数量(只读)
this[int index]double?按索引获取数据值

数据系列样式

自定义每个数据系列的外观:

// 按索引访问样式
var style = chart.DataSerialStyles[0];
属性类型默认值说明
FillColorIColor(自动)柱形、面积、饼图扇区的填充颜色
LineColorSolidColor(自动)折线图的线条颜色
LineWidthRGFloat2f线条宽度
LineStyleLineStylesSolid线条样式(Solid、Dash、Dot 等)
StartCapLineCapStylesNone起始端点样式
EndCapLineCapStylesNone结束端点样式

示例:半透明面积图

foreach (var style in chart.DataSerialStyles)
{
    style.FillColor = new Graphics.SolidColor(100, style.FillColor.ToSolidColor());
}

图例

控制图表图例:

// 隐藏图例
chart.ShowLegend = false;

// 访问图例属性
var legend = chart.PrimaryLegend;

LegendPosition 枚举

说明
Right图例在右侧(默认)
Bottom图例在底部
Left图例在左侧
Top图例在顶部

坐标轴配置(仅限坐标轴图表)

柱状图、条形图、折线图和面积图继承自 AxisChart,支持坐标轴配置:

属性类型说明
PrimaryAxisInfoAxisDataInfo主坐标轴配置
SecondaryAxisInfoAxisDataInfo次坐标轴配置
ShowHorizontalGuideLinesbool显示水平辅助线(默认:true
ShowVerticalGuideLinesbool显示垂直辅助线(默认:false

AxisDataInfo 属性

属性类型说明
Levelsint坐标轴级别数
Scalerint坐标轴缩放器
Minimumdouble坐标轴最小值
Maximumdouble坐标轴最大值
AutoMinimumbool自动确定最小值
AutoMaximumbool自动确定最大值
LargeStridedouble大步长值(主网格线)
SmallStridedouble小步长值(次网格线)

高亮范围

在工作表上高亮显示数据范围,以直观地指示图表的数据源:

sheet.AddHighlightRange(dataRange);
sheet.AddHighlightRange(serialNamesRange);
sheet.AddHighlightRange(categoryNamesRange);

图表类型详情

图表类型文档
柱状图柱状图
条形图条形图
折线图折线图
面积图面积图
2D 饼图2D 饼图
环形图环形图

类层次结构

FloatingObject
  └─ DrawingObject
      └─ DrawingComponent
          └─ Chart (base)
              ├─ AxisChart
              │   ├─ ColumnChart
              │   │   └─ BarChart
              │   ├─ LineChart
              │   └─ AreaChart
              └─ PieChart
                  ├─ Pie2DChart
                  └─ DoughnutChart

相关主题

这篇文章对您有帮助吗?