利用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

 
        
柱形图

        
线性图

        
条形图(横向)

        
饼图
    }

}