利用Office自带的OWC可以实现图表的输出,下面的代码做了下简单的封装。
using System;
using System.Data;
using System.Text;
using System.Drawing;

namespace doHope.OWCC
{
/// <summary>
/// 封装OWC做统计图
/// by cherish58
/// </summary>
public class OWCChart
{
#region 属性

private string _phaysicalimagepath;
private string _title;
private string _seriesname;
private int _picwidth;
private int _pichight;
private DataTable _datasource;
private string _strdatasource;
private string strCategory;
private string strValue;

/// <summary>
/// 图片存放路径
/// </summary>
public string PhaysicalImagePath
{
set{_phaysicalimagepath=value;}
get{return _phaysicalimagepath;}
}

public string Title
{
set{_title=value;}
get{return _title;}
}

public string SeriesName
{
set{_seriesname=value;}
get{return _seriesname;}
}

public int PicWidth
{
set{_picwidth=value;}
get{return _picwidth;}
}

public int PicHight
{
set{_pichight=value;}
get{return _pichight;}
}

/// <summary>
/// 传DataTable类型
/// </summary>
public DataTable DataSource
{
set
{
_datasource=value;
strCategory=GetColumnsStr(_datasource);
strValue=GetValueStr(_datasource);
}
get{return _datasource;}
}

/// <summary>
/// 传字符串,分隔用分号(;)
/// </summary>
public string strDataSource
{
set
{
_strdatasource = value ;
strCategory=GetColumnsStr(_strdatasource);
strValue=GetValueStr(_strdatasource);
}
get{return _strdatasource;}
}

private string GetColumnsStr(DataTable dt)
{
StringBuilder strList=new StringBuilder();
foreach(DataRow r in dt.Rows)
{
strList.Append(r[0].ToString()+'\t');
}
return strList.ToString();
}

private string GetColumnsStr(string coldt)
{
return coldt == "" ? "" : coldt.Substring(0,coldt.IndexOf(";")) ;
}

private string GetValueStr(DataTable dt)
{
StringBuilder strList=new StringBuilder();
foreach(DataRow r in dt.Rows)
{
strList.Append(r[1].ToString()+'\t');
}
return strList.ToString();
}

private string GetValueStr(string rowdt)
{
return rowdt == "" ? "" : rowdt.Substring(rowdt.LastIndexOf(";")+1) ;
}

#endregion

#region 构造函数

/// <summary>
/// 0
/// </summary>
public OWCChart()
{
//
}

/// <summary>
/// 1
/// </summary>
/// <param name="PhaysicalImagePath"></param>
/// <param name="Title"></param>
/// <param name="SeriesName"></param>
/// <param name="PicWidth"></param>
/// <param name="PicHight"></param>
public OWCChart(string PhaysicalImagePath,string Title,string SeriesName,int PicWidth,int PicHight)
{
_phaysicalimagepath=PhaysicalImagePath;
_title=Title;
_seriesname=SeriesName;
_pichight = PicHight ;
_picwidth = PicWidth ;
}

/// <summary>
/// 2
/// </summary>
/// <param name="Title"></param>
/// <param name="SeriesName"></param>
/// <param name="PicWidth"></param>
/// <param name="PicHight"></param>
public OWCChart(string Title,string SeriesName,int PicWidth,int PicHight)
{
_title=Title;
_seriesname=SeriesName;
_pichight = PicHight ;
_picwidth = PicWidth ;
}

#endregion
柱形图

线性图

条形图(横向)

饼图
}
}
using System;
using System.Data;
using System.Text;
using System.Drawing;
namespace doHope.OWCC
{
/// <summary>
/// 封装OWC做统计图
/// by cherish58
/// </summary>
public class OWCChart
{
#region 属性
private string _phaysicalimagepath;
private string _title;
private string _seriesname;
private int _picwidth;
private int _pichight;
private DataTable _datasource;
private string _strdatasource;
private string strCategory;
private string strValue;
/// <summary>
/// 图片存放路径
/// </summary>
public string PhaysicalImagePath
{
set{_phaysicalimagepath=value;}
get{return _phaysicalimagepath;}
}
public string Title
{
set{_title=value;}
get{return _title;}
}
public string SeriesName
{
set{_seriesname=value;}
get{return _seriesname;}
}
public int PicWidth
{
set{_picwidth=value;}
get{return _picwidth;}
}
public int PicHight
{
set{_pichight=value;}
get{return _pichight;}
}
/// <summary>
/// 传DataTable类型
/// </summary>
public DataTable DataSource
{
set
{
_datasource=value;
strCategory=GetColumnsStr(_datasource);
strValue=GetValueStr(_datasource);
}
get{return _datasource;}
}
/// <summary>
/// 传字符串,分隔用分号(;)
/// </summary>
public string strDataSource
{
set
{
_strdatasource = value ;
strCategory=GetColumnsStr(_strdatasource);
strValue=GetValueStr(_strdatasource);
}
get{return _strdatasource;}
}
private string GetColumnsStr(DataTable dt)
{
StringBuilder strList=new StringBuilder();
foreach(DataRow r in dt.Rows)
{
strList.Append(r[0].ToString()+'\t');
}
return strList.ToString();
}
private string GetColumnsStr(string coldt)
{
return coldt == "" ? "" : coldt.Substring(0,coldt.IndexOf(";")) ;
}
private string GetValueStr(DataTable dt)
{
StringBuilder strList=new StringBuilder();
foreach(DataRow r in dt.Rows)
{
strList.Append(r[1].ToString()+'\t');
}
return strList.ToString();
}
private string GetValueStr(string rowdt)
{
return rowdt == "" ? "" : rowdt.Substring(rowdt.LastIndexOf(";")+1) ;
}
#endregion
#region 构造函数
/// <summary>
/// 0
/// </summary>
public OWCChart()
{
//
} 
/// <summary>
/// 1
/// </summary>
/// <param name="PhaysicalImagePath"></param>
/// <param name="Title"></param>
/// <param name="SeriesName"></param>
/// <param name="PicWidth"></param>
/// <param name="PicHight"></param>
public OWCChart(string PhaysicalImagePath,string Title,string SeriesName,int PicWidth,int PicHight)
{
_phaysicalimagepath=PhaysicalImagePath;
_title=Title;
_seriesname=SeriesName;
_pichight = PicHight ;
_picwidth = PicWidth ;
}
/// <summary>
/// 2
/// </summary>
/// <param name="Title"></param>
/// <param name="SeriesName"></param>
/// <param name="PicWidth"></param>
/// <param name="PicHight"></param>
public OWCChart(string Title,string SeriesName,int PicWidth,int PicHight)
{
_title=Title;
_seriesname=SeriesName;
_pichight = PicHight ;
_picwidth = PicWidth ;
}
#endregion
柱形图
线性图
条形图(横向)
饼图
}
}

