使用C#和Excel进行报表开发(三)-生成统计图(Chart)

来源:互联网 发布:网络贷款超市 编辑:程序博客网 时间:2024/06/05 07:39


private void button4_Click(object sender, EventArgs e)
{
    
try
    
{
        ThisApplication 
= new Excel.Application();
        m_objBooks 
= (Excel.Workbooks)ThisApplication.Workbooks;
        ThisWorkbook 
= (Excel._Workbook)(m_objBooks.Add(Type.Missing));

        ThisApplication.DisplayAlerts 
= false;

        
this.DeleteSheet();
        
this.AddDatasheet();
        
this.LoadData();

        CreateChart();

        ThisWorkbook.SaveAs(
"z://Book2.xls", Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);

    }

    
catch (Exception ex)
    
{
        MessageBox.Show(ex.Message);
    }

    
finally
    
{
        ThisWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
        ThisApplication.Workbooks.Close();

        ThisApplication.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ThisWorkbook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(ThisApplication);
        ThisWorkbook 
= null;
        ThisApplication 
= null;
        GC.Collect();
        
this.Close();
    }


}


Excel.Application ThisApplication 
= null;
Excel.Workbooks m_objBooks 
= null;
Excel._Workbook ThisWorkbook 
= null;

Excel.Worksheet xlSheet 
= null;

/// <summary>
/// 用生成的随机数作数据
/// </summary>

private void LoadData()
{
    Random ran 
= new Random();
    
for (int i = 1; i <= 12; i++)
    
{
        xlSheet.Cells[i,  
1= i.ToString() + "";
        xlSheet.Cells[i, 
2= ran.Next(2000).ToString();    
    }

}

/// <summary>
/// 删除多余的Sheet
/// </summary>

private void DeleteSheet()
{
    
foreach (Excel.Worksheet ws in ThisWorkbook.Worksheets)
        
if (ws != ThisApplication.ActiveSheet)
        
{
            ws.Delete();
        }

    
foreach (Excel.Chart cht in ThisWorkbook.Charts)
        cht.Delete();
            
}

/// <summary>
/// 创建一个Sheet,用来存数据
/// </summary>

private void AddDatasheet()
{
    xlSheet 
= (Excel.Worksheet)ThisWorkbook.
        Worksheets.Add(Type.Missing, ThisWorkbook.ActiveSheet,
        Type.Missing, Type.Missing);

    xlSheet.Name 
= "数据";
}

/// <summary>
/// 创建统计图         
/// </summary>

private void CreateChart()
{
    Excel.Chart xlChart 
= (Excel.Chart)ThisWorkbook.Charts.
        Add(Type.Missing, xlSheet, Type.Missing, Type.Missing);

    Excel.Range cellRange 
= (Excel.Range)xlSheet.Cells[11];
    xlChart.ChartWizard(cellRange.CurrentRegion,
        Excel.XlChartType.xl3DColumn, Type.Missing,
        Excel.XlRowCol.xlColumns,
10true ,
        
"访问量比较(dahuzizyd.cnblogs.com)""月份""访问量",
        
"");

    xlChart.Name 
= "统计";

    Excel.ChartGroup grp 
= (Excel.ChartGroup)xlChart.ChartGroups(1);
grp.GapWidth 
= 20;
    grp.VaryByCategories 
= true;

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

原创粉丝点击