资源描述:
《使用c#和excel进行报表开发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、使用C#和Excel进行报表开发(1)http://tech.ddvip.com 2007年11月20日 社区交流关键字:AppletORMGZipStreamTupleyieldcsdn内容摘要:下面是一个简单的例子,打开一个定义好的Excel文件,这个文件是作为报表的模板,然后向模板的指定格子里填充数据,形成一个报表,在web方式下可以按照指定的命名方式在服务器上生成一个excel文件,之后传送到客户端,由客户端启动excel进行打印。 目前的商业工具如水晶报表,ActiveReport等,都提供了灵活,强大的功
2、能,但是对于比较特殊化的表格,特别是国内的一些应用,都是一个个的格子组成的,这样要是用线来一根根画就比较麻烦,但是这类工具还都不提供表格化的报表布局定义方式。一个很好的选择是VS2005的客户端报表(RDLC),但是在某几个方面还是不够灵活,例如,灵活性有限制,要想自己编码实现一些复杂逻辑还是有困难;要VS2005,对于一些还在使用VS2003的项目就只有眼馋的份了。用Excel来实现,优点在于页面布局设计灵活,同时使用代码来操作数据要更灵活,更精确。 下面是一个简单的例子,打开一个定义好的Excel文件,这个文件是作为报表
3、的模板,然后向模板的指定格子里填充数据,形成一个报表,在web方式下可以按照指定的命名方式在服务器上生成一个excel文件,之后传送到客户端,由客户端启动excel进行打印。 Excel.Applicationm_objExcel=null; Excel._Workbookm_objBook=null; Excel.Sheetsm_objSheets=null; Excel._Worksheetm_objSheet=null; Excel.Rangem_objRange=null; objectm_objOpt=S
4、ystem.Reflection.Missing.Value; try { m_objExcel=newExcel.Application(); m_objBook=m_objExcel.Workbooks.Open("z:Book1.xls",m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt); m_objSheets=(Excel.Sheets)m_
5、objBook.Worksheets; m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item(1)); string[]info=newstring[5]{"Cure","26","dahuzizyd.cnblogs.com","汉","按时?放奥斯丁奥斯丁非是否奥斯丁非"}; m_objRange=m_objSheet.get_Range("B1",m_objOpt); m_objRange.Value=info[0]; m_objRange=m_objSheet.g
6、et_Range("E1",m_objOpt); m_objRange.Value=info[1]; m_objRange=m_objSheet.get_Range("B2",m_objOpt); m_objRange.Value=info[2]; m_objRange=m_objSheet.get_Range("E2",m_objOpt); m_objRange.Value=info[3]; m_objRange=m_objSheet.get_Range("A3",m_objOpt); m_objRange.V
7、alue=info[4]; m_objExcel.DisplayAlerts=false; m_objBook.SaveAs("z:Book2.xls",m_objOpt,m_objOpt, m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt,m_objOpt,m_objOpt,m_objOpt); } catch(Exceptionex) { MessageBox.Show(ex.Message); } fina
8、lly { m_objBook.Close(m_objOpt,m_objOpt,m_objOpt); m_objExcel.Workbooks.Close(); m_objExcel.Quit(); System.Runtime.InteropServices.Ma