您的位置:首页 > 编程语言 > C#

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

2013-02-21 15:02 225 查看
到此,一切就绪了,下面要生成Chart,并将其存为一个Excel文件:

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文件,最终生成的Chart应该像这样:

完成了Chart的生成,但是上面对于每个月只有一项数据,如果我想显示多项呢,例如显示每个月两个页面的范围量的对比。方法很简单,只要再多生成一组数据就可以了,我们修改下LoadData方法:

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();

xlSheet.Cells[i, 3]
= ran.Next(1500).ToString();

}

}

再次运行程序,生成Chart看看,应该像下面的效果:

可以看到,两组数据以不同的形状显示,同时,图例部分也不再显示1-12月共12项,而是显示两项,这是因为在上面的代码中我们设置了ChartGroup的VaryByCategories 属性:

grp.VaryByCategories = true;当我们有两个以上的组时,这一项就失效了。

在用C#操作Excel的时候,恐怕最大的困难就在于不知道Excel提供的各个对象,以及它们的属性,方法等信息,好在MSDN里有关于Excel的接口说明-Excel
Primary Interop Assembly Reference,参照这些,相信很快就能上手了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: