Excel 二次开发系列(7):报表服务基础

Excel 二次开发系列 C#

生成报表一般有几个步骤:

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 = "统计";

            //现在的统计图只有一个组,他们会显示成一样的颜色,我们来让12Bar都显示不同的颜色:

            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"; 

 

posted @ 2009-10-28 11:23  tomin  阅读(5477)  评论(0编辑  收藏  举报