Excel 二次开发系列(7):报表服务基础
生成报表一般有几个步骤:
1 选定一个 Excel表。 生成一个统计图像。
2 设定数据来源。
3 生成chart。
4 设置名称,样式,格式,颜色等。
这一节主要介绍几个重要的方法和几个重要的属性:
// 生成一个统计图对象:
Excel.Chart xlChart = (Excel.Chart)ThisWorkbook.Charts.
Add(Type.Missing, xlSheet, Type.Missing, Type.Missing);
在workbook 里面添加一个 chart对象。
//设定数据来源:
Excel.Range cellRange = (Excel.Range)xlSheet.Cells[1, 1];
设置的是第1row 和第1columns.
//通过向导生成Chart:
xlChart.ChartWizard(cellRange.CurrentRegion,
Excel.XlChartType.xl3DColumn, Type.Missing,
Excel.XlRowCol.xlColumns, 1, 0, true,
"访问量比较(http://www.cnblogs.com/tomin)", "月份", "访问量","");
在下面就是chart类中的创建图像的一个方法:
Public void ChartWizard (
Object Source,
Object Gallery,
Object Format,
Object PlotBy,
Object CategoryLabels,
Object SeriesLabels,
Object HasLegend,
Object Title,
Object CategoryTitle,
Object ValueTitle,
Object ExtraTitle
)
参数
Source
类型:System..::.Object
包含新图表的源数据的范围。如果省略此参数,则 Microsoft Office Excel 编辑活动图表工作表或在活动工作表上选择的 Chart 控件。
Gallery
类型:System..::.Object
XlChartType。图表类型。
Format
类型:System..::.Object
内置自动套用格式的选项编号。可以是一个 1 到 10 之间的数(取决于库类型)。如果省略此参数,则 Excel 根据库类型和数据源选择默认值。
PlotBy
类型:System..::.Object
指定每个系列的数据是按行绘制还是按列绘制。可以为以下 XlRowCol 常数之一:xlRows 或 xlColumns。
CategoryLabels
类型:System..::.Object
一个整数,指定源范围中包含类别标签的行数或列数。合法值是从 0(零)到相应类别或系列的最大数减一。
SeriesLabels
类型:System..::.Object
一个整数,指定源范围中包含系列标签的行数或列数。合法值是从 0(零)到相应类别或系列的最大数减一。
HasLegend
类型:System..::.Object
为 true 时包含图例。
Title
类型:System..::.Object
Chart 控件标题文本。
CategoryTitle
类型:System..::.Object
分类轴标题文本。
ValueTitle
类型:System..::.Object
数值轴标题文本
ExtraTitle
类型:System..::.Object
三维图表的系列轴标题或二维图表的第二个数值轴标题。
注:
source,一般用Rang的当前区域。例如cellRange.CurrentRegion
Gallery , XlChartType。图表类型。 是一个枚举类型。常用的有如下
public enum XlChartType (常用的)
Member name |
Description |
xl3DArea |
3D Area |
xl3DColumn |
3D Column |
xl3DColumnClustered |
3D Clustered Column |
xl3DColumnStacked |
3D Stacked Column |
xl3DColumnStacked100 |
3D 100% Stacked Column |
xl3DLine |
3D Line |
xl3DPie |
3D Pie |
xl3DPieExploded |
Exploded 3D Pie |
xlColumnClustered |
Clustered Column |
xlConeBarClustered |
Clustered Cone Bar |
xlConeBarStacked |
Stacked Cone Bar |
xlConeBarStacked100 |
100% Stacked Cone Bar |
xlConeCol |
3D Cone Column |
xlLine |
Line |
xlLineMarkers |
Line with Markers |
xlLineMarkersStacked |
Stacked Line with Markers |
xlLineMarkersStacked100 |
100% Stacked Line with Markers |
xlLineStacked |
Stacked Line |
xlLineStacked100 |
100% Stacked Line |
xlPie |
Pie |
xlRadarMarkers |
Radar with Data Markers |
xlStockVOHLC |
Volume-Open-High-Low-Close |
xlXYScatterLines |
Scatter with Lines. |
xlXYScatterLinesNoMarkers |
Scatter with Lines and No Data Markers |
xlXYScatterSmooth |
Scatter with Smoothed Lines |
xlXYScatterSmoothNoMarkers |
Scatter with Smoothed Lines and No Data Markers |
设置统计图Sheet的名称:*/
xlChart.Name = "统计";
//现在的统计图只有一个组,他们会显示成一样的颜色,我们来让12个Bar都显示不同的颜色:
Excel.ChartGroup grp = (Excel.ChartGroup)xlChart.ChartGroups(1);
grp.GapWidth = 20;
grp.VaryByCategories = true;
//现在Chart的条目的显示形状是Box,我们让它们变成圆柱形,并给它们显示加上数据标签:
Excel.Series s = (Excel.Series)grp.SeriesCollection(1);
s.BarShape = XlBarShape.xlCylinder;
s.HasDataLabels = true;
//下面再来设置统计图的标题和图例的显示:
xlChart.Legend.Position = XlLegendPosition.xlLegendPositionTop;
xlChart.ChartTitle.Font.Size = 24;
xlChart.ChartTitle.Shadow = true;
xlChart.ChartTitle.Border.LineStyle = Excel.XlLineStyle.xlContinuous;
//最后设置两个轴的属性,Excel.XlAxisType.xlValue对应的是Y轴,Excel.XlAxisType.xlCategory对应的是X轴:
Excel.Axis valueAxis = (Excel.Axis)xlChart.Axes(Excel.XlAxisType.xlValue, XlAxisGroup.xlPrimary);
valueAxis.AxisTitle.Orientation = -90;
Excel.Axis categoryAxis = (Excel.Axis)xlChart.Axes(Excel.XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
categoryAxis.AxisTitle.Font.Name = "MS UI Gothic";