using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using OWC = Microsoft.Office.Interop.Owc11;
using Microsoft.Office.Interop;
using MySql.Data.MySqlClient;
![]()
![]()
/**////OWC11 For TDR1280
///Ivan Geng
///2007-08-09
namespace Beyondsoft.ATT.OWCChart11
![]()
![]()
{
public class OWCChart11
![]()
{
![]()
Attribute#region Attribute
private string _phaysicalimagepath;
private string _title;
private int _picwidth;
private int _pichight;
private DataTable _datasource;
private string strCategory;
![]()
![]()
/**//// <summary>
/// Phaysical Path of Image
/// </summary>
private string PhaysicalImagePath
![]()
{
![]()
set
{ _phaysicalimagepath = value; }
![]()
get
{ return _phaysicalimagepath; }
}
private string Title
![]()
{
![]()
set
{ _title = value; }
![]()
get
{ return _title; }
}
![]()
private int PicWidth
![]()
{
![]()
set
{ _picwidth = value; }
![]()
get
{ return _picwidth; }
}
![]()
private int PicHeight
![]()
{
![]()
set
{ _pichight = value; }
![]()
get
{ return _pichight; }
}
public DataTable DataSource
![]()
{
set
![]()
{
_datasource = value;
strCategory = GetColumnsStr(_datasource);
}
![]()
get
{ return _datasource; }
}
#endregion
![]()
public OWCChart11(string PhaysicalImagePath, string Title, int Width, int Height)
![]()
{
_phaysicalimagepath = PhaysicalImagePath;
_title = Title;
PicWidth = Width;
PicHeight = Height;
}
![]()
![]()
Private Method#region Private Method
private void CreateSeries(OWC.ChChart objChart, string seriesName, string seriesValue)
![]()
{
OWC.ChSeries series = objChart.SeriesCollection.Add(0);
series.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), seriesName);
series.SetData(OWC.ChartDimensionsEnum.chDimCategories,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory.Trim());
series.SetData(OWC.ChartDimensionsEnum.chDimValues,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), seriesValue.Trim());
OWC.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
dl.HasValue = true;
![]()
}
![]()
private void CreateChart(OWC.ChartChartTypeEnum chartType, string strX, string strY, string fileName, string[] seriesNames, DataTable dataSourceTable)
![]()
{
//Creat ChartSpace object to placed chart
OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass();
//Add chart to ChartSpace object
OWC.ChChart objChart = objCSpace.Charts.Add(0);
![]()
//Chart Type
objChart.Type = chartType;
![]()
//Legend
objChart.HasLegend = true;
![]()
//Title
objChart.HasTitle = true;
objChart.Title.Caption = _title;
![]()
//Axes X, Y
if (strX != null && strY != null)
![]()
{
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = strX;
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = strY;
}
![]()
![]()
//Add series
if (seriesNames != null)
![]()
{
int index = 1; //Add series value from the second column of datasource
foreach (string seriesName in seriesNames)
![]()
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dataSourceTable.Rows)
![]()
{
strList.Append(r[index].ToString() + '\t');
}
CreateSeries(objChart, seriesName, strList.ToString().Trim());
index++;
}
}
![]()
string strAbsolutePath = _phaysicalimagepath + "\\" + fileName + ".png";
objCSpace.ExportPicture(strAbsolutePath, "png", _picwidth, _pichight);
![]()
}
![]()
private string GetColumnsStr(DataTable dt)
![]()
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
![]()
{
//The first column as X axes
strList.Append(r[0].ToString() + '\t');
}
return strList.ToString();
}
![]()
private string GetValueStr(DataTable dt, int index)
![]()
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dt.Rows)
![]()
{
strList.Append(r[index].ToString() + '\t');
}
return strList.ToString();
}
#endregion
![]()
![]()
Public Method#region Public Method
public DataTable GetTable(string connectionString, string strSql, params MySqlParameter[] commandParams)
![]()
{
if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");
using (MySqlConnection connection = new MySqlConnection(connectionString))
![]()
{
MySqlCommand cmd = new MySqlCommand(strSql, connection);
cmd.CommandType = CommandType.StoredProcedure;
if (commandParams != null)
![]()
{
foreach (MySqlParameter p in commandParams)
![]()
{
if (p != null)
![]()
{
if ((p.Direction == ParameterDirection.InputOutput ||
p.Direction == ParameterDirection.Input) &&
(p.Value == null))
![]()
{
p.Value = DBNull.Value;
}
cmd.Parameters.Add(p);
}
}
}
![]()
MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds, "MyTable");
return ds.Tables["MyTable"];
}
![]()
}
![]()
![]()
/**//// <summary>
///
/// </summary>
/// <param name="strX"></param>
/// <param name="strY"></param>
/// <param name="fileName"></param>
/// <param name="seriesNames"></param>
/// <param name="seriesValueTable"></param>
public void CreateColumn(string strX, string strY, string fileName, string[] seriesNames, DataTable dataSourceTable)
![]()
{
CreateChart(OWC.ChartChartTypeEnum.chChartTypeColumnClustered, strX, strY, fileName, seriesNames, dataSourceTable);
}
![]()
![]()
/**//// <summary>
/// Pie Chart
/// </summary>
/// <returns></returns>
public void CreatePie(string fileName, DataTable dataSourceTable, int index)
![]()
{
OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass();
OWC.ChChart objChart = objCSpace.Charts.Add(0);
![]()
objChart.Type = OWC.ChartChartTypeEnum.chChartTypePie3D;
![]()
objChart.HasLegend = true;
![]()
objChart.HasTitle = true;
objChart.Title.Caption = _title;
![]()
string strValue = GetValueStr(dataSourceTable, index);
![]()
//Add series
OWC.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);
![]()
ThisChSeries.SetData(OWC.ChartDimensionsEnum.chDimCategories,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory.Trim());
![]()
ThisChSeries.SetData(OWC.ChartDimensionsEnum.chDimValues,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue.Trim());
![]()
//Data label at column or pie
OWC.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
dl.HasValue = false;
dl.HasPercentage = true;
![]()
string strAbsolutePath = _phaysicalimagepath + "\\" + fileName + ".png";
objCSpace.ExportPicture(strAbsolutePath, "png", _picwidth, _pichight);
}
![]()
![]()
/**//// <summary>
/// Smooth Line
/// </summary>
/// <param name="strX"></param>
/// <param name="strY"></param>
/// <param name="fileName"></param>
public void CreateLine(string strX, string strY, string fileName, string[] seriesNames, DataTable dataSourceTable)
![]()
{
CreateChart(OWC.ChartChartTypeEnum.chChartTypeSmoothLine, strX, strY, fileName, seriesNames, dataSourceTable);
}
![]()
public void CreateColumnStacked(string strX, string strY, string fileName, string[] seriesNames, DataTable dataSourceTable)
![]()
{
CreateChart(OWC.ChartChartTypeEnum.chChartTypeColumnStacked, strX, strY, fileName, seriesNames, dataSourceTable);
}
![]()
public void CreateColumnStacked100(string strX, string strY, string fileName, string[] seriesNames, DataTable dataSourceTable)
![]()
{
CreateChart(OWC.ChartChartTypeEnum.chChartTypeColumnStacked100, strX, strY, fileName, seriesNames, dataSourceTable);
}
![]()
public void CreateColumnLine(string strX, string strY, string fileName, string[] seriesColumnNames, string[] seriesLineNames, DataTable dataSourceTable)
![]()
{
OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass();
![]()
objCSpace.HasChartSpaceLegend = true;
![]()
OWC.ChChart objChart = objCSpace.Charts.Add(0);
![]()
objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
//Column
![]()
objChart.HasTitle = true;
objChart.Title.Caption = _title;
![]()
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = strX;
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = strY;
![]()
if (seriesColumnNames != null)
![]()
{
int i = 0;
int index = 1; //Add series value from the second column of datasource
foreach (string seriesColumnName in seriesColumnNames)
![]()
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dataSourceTable.Rows)
![]()
{
strList.Append(r[index].ToString() + '\t');
}
OWC.ChSeries series = objChart.SeriesCollection.Add(i);
series.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), seriesColumnName);
series.SetData(OWC.ChartDimensionsEnum.chDimCategories,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory.Trim());
series.SetData(OWC.ChartDimensionsEnum.chDimValues,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strList.ToString().Trim());
OWC.ChDataLabels dl = objChart.SeriesCollection[i].DataLabelsCollection.Add();
dl.HasValue = true;
index++;
i++;
}
}
![]()
if (seriesLineNames != null)
![]()
{
int i = 0;
int index = seriesColumnNames.Length+1; //Add series value from the second column of datasource
OWC.ChSeries sDispLar;
OWC.ChAxis MyAxis = null;
foreach (string seriesLineName in seriesLineNames)
![]()
{
StringBuilder strList = new StringBuilder();
foreach (DataRow r in dataSourceTable.Rows)
![]()
{
strList.Append(r[index].ToString() + '\t');
}
sDispLar = objChart.SeriesCollection.Add(i);
![]()
MyAxis = objChart.Axes.Add(sDispLar.get_Scalings(OWC.ChartDimensionsEnum.chDimValues));
sDispLar.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLine;
sDispLar.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), seriesLineName);
sDispLar.SetData(OWC.ChartDimensionsEnum.chDimCategories,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory.Trim());
sDispLar.SetData(OWC.ChartDimensionsEnum.chDimValues,
OWC.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strList.ToString().Trim());
OWC.ChDataLabels dl = objChart.SeriesCollection[i].DataLabelsCollection.Add();
dl.HasValue = true;
index++;
i++;
sDispLar.Ungroup(true);
}
MyAxis.Position = OWC.ChartAxisPositionEnum.chAxisPositionRight;
MyAxis.HasMinorGridlines = false;
MyAxis.NumberFormat = "0.00%";
MyAxis.HasTitle = true;
MyAxis.Title.Caption = "%";
}
![]()
string strAbsolutePath = _phaysicalimagepath + "\\" + fileName + ".png";
objCSpace.ExportPicture(strAbsolutePath, "png", _picwidth, _pichight);
}
#endregion
}
}
![]()
posted on
2007-08-14 17:51
IvanGeng
阅读(
633)
评论()
收藏
举报