C#.NET自动生成Excel图形报表

要制作出一个Excel文档格式的图文并茂报表,首先必
须知道如何生成或打开一个Excel文档,如何处理文档内容,
如何添加、修改文字与图表内容和其它各种Excel文档元素
对象,并对其进行格式化。
     (1)新建一个Excel文档方法:
Excel.Application oXL; //定义一个Excel应用程

Excel.』orkbook oWB; //定义一个工作薄
Excel._Worksheet oSheet; //定义一个工作表
Excel.Range oRng; //定义一个工作区域
//打开Excel程序.
oXL=new Excel.Application();
oXL.Visible=true;
//添加一个新工作薄
oWB=(Excel._Workbook) (oXL.Workbooks.Add(
Missing.Value));
oSheet=(Excel._Worksheet)oWB.ActiveSheet;
//⋯⋯操作语句⋯⋯
oXL.Visible=true; //让当前打开的Excel文件可

oXL.UserControl=true; //让当前打开的Excel文
件用户有操作控制权
//回收空间,关闭当前Excel工作薄
oRng=null;
oSheet=null;
oWB=null;
oXL.Quit();

oXL=hUH;
     (2)在Excel的工作表的单元中加入文本内容
oSheet.Cells[r,e】=Vaule;
其中:r为行数,c为列数,Vaule为单元值。
     (3)在Excel的工作表的工作区域中加入公式
oRng=oSheet.get_Range(”D2”,”D6”); //获得工作
区域
oRng.Formula=”=RAND()★100000”; //填入公式
oRng.NumberFormat=”$O.00”: //格式化内容
      (4)打开一个已有Excel报表模板文档方法
//打开Excel程序.
oXL=new Excel.Application();
oXL.Visible=true;
//打开一个Excel模板工作薄
oWB=(Excel._Workbook)(oXL.Workbooks.Open
(server.mappath(“\test”)&“\bookl.xh”)
oSheet=(Excel.Worksheet)oWB.ActiveSheet;
     (5)格式化工作区域、单元格内容
Excel Range对象是比较独特的。Range对象可以是单
个单元格或单元格集合。它可以是单个对象或对象的集合。
它可以是某个行或列,并且可以表示三维的跨多个工作表的
单元格集合。
有Range对象实例oRng,设定了内容后,可以通过下列
语句格式化选定工作区域单元格文本内容。
      ①设定选定区域:字体、字号、粗体、斜体、下划线、前景
色、背景色
oRng=oSheet.get Range(”A1”,”DI”);
oRng.Font.Name=”楷体”: //字体
oRng.Font.Size=20; //字号一一pt
oRng.Font.Bold=true; //粗体
oRng.Font.Italic=true; //斜体
oRng.Font.Underline 2
Excel.X1UnderlineStyle.xlUnderlineStyleDoubleAccounting;
//下划线
oRng.Font.ColorIndex=3: //3一红色前景4一绿

5一蓝6一黄
oRng.Interior.Colorlndex=6: 116一黄色背景
      ②对选定区域对齐处理:
oRng.VerticalAlignment=Excel.X1VAlign.xlVAlignCenter;
//垂直居中
oRng.HorizontalAlignment=Excel.X1HAlign.xlHAlignCenter;
//水平居中
      ③格式化选定工作区域:文本对齐方式,自动换行
oRng。oSheet.get_Range(”AI”,”DI”);
oRng.Orientation=一45; //x寸齐度数:一90一+90,
正常为0度,水平对齐
oRng.WrapText=true; //自动换行
      ④格式化选定工作区域边框
oRng=oSheet.get_Range(”A1”,”D6”);
oRng.Borders.Weight=Excel.X1BorderWeight.xlThin;
//细线框
     ⑤设置行宽与列宽
//设置整个工作薄中每行与每列相同的行宽与列宽
oSheet.Rows.RowHeight=15;
oSheet.Columns.ColumnWidth=10;
//设置工作薄中某区域中每行与指定列相同的行宽与
列宽
oRng=oSheet.get_Range(”A1”,”DIO”);
oRng.RowHeight=20;
oRng.ColumnWidth=15;
     ⑥根据列中内容自动设置列宽.
oRng=oSheet.get_Range(”A1”,”D1”);
oRng.EntireColumn.AutoFit();
     ⑦格式化选定工作区域合并居中
oSheet.get Range(”A8”,”A8”).Value2=”A8 value”;
oR.ng=oSheet.get_Range(”A8”,”D8”);
oRng.MergeCells=true; //合并:true,不合并:false
    (6)添加图表,按下列步骤执行:
     ①预定义后面使用的对象与变量
Excel._Workbook oWB;
Excel.Series oSeries;
Excel.Range oResizeRange;
Excel.』hart oChart;
int iNumQtrs;
     ②添加一个图表对象实例
oWB=(Excel._Workbook)oWS.Parent;
oChart=(Excel.工hart)oWB.Charts.Add(Missing.Value,
Missing.Value,Missing.Value,Missing.Value);
     ④对于选定数据区域
iNumQtrs=4:
oResizeRange=oWS.get Range(’’C2:C6”.Missing.Value
).get_Resize(Missing.Value,iNumQtrs);//”C2:C6”:起始列,
iNumQtrs:列数(项目数)
或者:
oResizeRange=oWS.get Range(”C2”,”F6”);

      ④使用图表向导生成图表
oChart.ChartWizard(oResizeRange, //选定区域
Excel.X1ChartType.x13DColumn, //图表类型:立体直
方图
Missing.Value,
Excel.X1RowC01.xlColumns, //显示方式:数据系列
产生在列
Missing.Value,Missing.Value,Missing.Value,Miss—
ing.Value,
Missing.Value,Missing.Value,Missing.Value);
常用的图表类型有:
柱形图(x13DcoluIIlIl、xlColumnClustered)
圆饼图(x13DPie)
折线图(xlLine)
条形图(】【lBarClustered)
显示方式:数据系列产生在列(xlColum璐)或行(xlRows)
上。
     ⑤设置横坐标显示的项目名称
oSeries=(Excel.Series)oChart.SeriesCollection(1);
oSeries.XValues=oWS.get_Range(”B2”,”B6”);
     ⑥显示图表标题名称
oChart.HasTifle=true; //显示标题
oChart.ChartTide.Text=”年销售量圆饼图”; //图表
标题
for(int iRet=1;iRet<=iNumQtrs;iRet++)
{
oSeries=(Excel.Series)oChart.SeriesCollection(iRet);
String seriesName;
seriesName=”=、”第”;
seriesName=String.Coneat(seriesName,iRet);
seriesName=String.Coneat(seriesName,”季度\””);
oSeries.Name=seriesName;
j
     ⑦将图表存放至指定工作薄
oChart.Location(Excel.XlChartLocation.xlLoeationAsObjeet,
oWS.Name);
     ⑧移动图表1至选定的行,列作为图表的左上角
oResizeRange=(Excel.Range)oWS.Rows.get Item(8,
Missing.Value);
oWS.Shapes.Item(”Chart l”).Top=(float)(double)ore—
sizeRange.Top;
oResizeRange=(Excel.Range)oWS.Columns.get_Item(I,
Missing.Value);
oWS.Shapes.Item(”Chart 1”).Left=(float)(double)oRe—
sizeRange.Left;
对于文字报表,当然使用预设格式的Excel模板文档创
建报表好。因为,不仅给予了客户更多的灵活性,让客户对整
个文档中的对象的格式设置和布局施加有更多控制,而且在
程序设计中可以使用较少的代码创建报表文档,使得创建过

程会更加容易。另外,通过使用模板,可以更精确地调整表
格、行、列,单元和其他对象在文档中的布局,并可为这些对
象添加格式设置。
在报表外观设计时让客户来给出一个数据表格模板Ex.
cel文档,然后根据模板Excel文档,在需要生成报表的地方,
从数据库中提取相应的内容,打开数据表格模板Excel文档
模板样式表格,将一个个数据填充到其样式表格单元中去,
再根据选定工作区域的数据生成图表,最后就可以得到客户
满意的表格来。
     3 程序清单
程序清单见附录(略)。
    (1)在Visual C群.NET开发程序时,必须添加对Microsoft
Excel对象库的引用。为此,请按照下列步骤操作:
   ①在项目菜单上,单击添加引用。
在COM选项卡上,找到Microsoft Excel对象库。然后
单击选择。
     ②滚动到代码窗口的顶部。将下面的代码行添加到US.
ing指令列表的末尾:
using System.Reflection;
     (2)程序生成的文字报表,其数据是采用程序中固定数
据添加模式的,当然可以采用连接数据库,将指定数据表的
数据动态地填入Excel报表单元中,实现指定数据表的动态
报表模式。
     (3)程序清单给出的是Windows程序,而对于Web的
ASP.NET程序只需略作修改即可。
但是必须注意的是:编制ASP.NET程序时会出现用户
操作Excel的权限不够而无法打开Excel,解决办法是可以在

Web服务器中重新配置Dcom。运行Deomcnfg.exe,找到Excel
应用程序,配置其属性,身份验证级别选“无”,身份标识选
“交互式用户”,安全性页面,启动和访问均给everyone。注意:
查看当前进程中是否有Winexcel进程存在,如果有且不能被
结束,那么重启动计算机。再次运行你的代码就行了,以后就
再也不会出现权限不够的情况了。
     4 小结
本程序已在WindoWS XP专业版+Visual Studio.NET
2003+Microsoft Office2000环境下运行通过。如何在开发的
应用软件中提供给出客户满意的图文并茂的报表还有许多
办法,待以后再作详细探讨。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值