- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
C#winform中嵌入Excel实现复杂表格的显示和控制
摘要:阐述了在C#winform程序中,使用WebBrowser控件将Excel嵌入到窗体内,以实现复杂表格显示和控制的具体方法。
关键词:Excel;C#;WebBrowser;复杂表格显示
中图分类号:TP301文献标识码:A文章编号2013)004002602
0引言
在开发基于报表的管理信息系统时,用户可能会明确要求在窗体上显示他们自己设计的表格,而这些表格中大多包含有样式非常复杂的表格。此时,想利用C#中自带的表格控件实现需求几乎是不可能的。Excel是大众熟悉的电子表格处理软件,其报表处理能力和数据表现能力都非常强大,用其制作样式复杂的表格是一件非常简单的事情。如果能将Excel文件嵌入到C#语言开发的winform程序中,就可以非常容易地解决在窗体上显示复杂表格的需求,又能够实现让用户便捷地编辑数据和导出Excel文件等功能。
1实现思路
虽然Excel可以制作样式复杂的表格,但是软件系统的数据都被存放在数据库内,因此必须编写代码将数据库文件内的数据输出到Excel文件内,再将该Excel文件内容显示到窗体上就可以满足用户需求。具体实现思路如下:①按照用户设计的表格样式,用Excel制作表格模板文件;②为了不破坏模板文件,在使用文件之前,通过代码复制模板文件,以后的所有操作都在新文件上执行;③编写C#程序,通过ADO.NET技术从数据库内提取数据,向Excel文件的指定单元格输出数据并保存文件;④将Excel文件嵌入到窗体中,供用户浏览修改,并可以保存修改后的内容。
2C#中控制Excel文件的方法
2.1引用Excel类型库
在C#中控制Excel文件的前提是添加Excel的引用。根据计算机上安装的Excel软件版本的不同,组件名称和类型库的版本也不一样,此处Excel的版本为2003版本,因此COM组件名称为MicrosoftExcel11.0ObjectLibrary。引用Excel类型库的具体操作方法为:①在解决方案资源管理器中,右击“引用”菜单项,选择“添加引用”;②在“添加引用”对话框中,选择“COM”选项卡,并从列表框内选择MicrosoftExcel11.0ObjectLibrary;③单击“确定”按钮,关闭“添加引用”对话框。
2.2编程控制Excel
引用Excel类型库后,程序中就可以使用Excel相关的类和接口来控制Excel文件。常用到的Excel相关类和接口有Application(应用)、Workbook(工作薄)和Worksheet(工作表)等。
2.2.1逐单元格赋值输出
向样式复杂的Excel表格输出数据时,由于单元格的合并拆分等原因,加上需要向其赋值输出的单元格排列没有任何规律,所以通常都会用到逐个单元格赋值输出的方法,即在程序中一个一个定位单元格,然后对其赋值输出。例如,向Excel文件“temp.xls”的Sheet1工作表A1单元格输出“111”,B1单元格输出“222”的代码为:
Excel.Applicationapp=newExcel.Application();//创建Excel对象
Excel.Workbookswbs=app.Workbooks;//创建Excel工作薄
stringFileName=Application.StartupPath+\\temp.xls;
Excel.Workbookwb=wbs.Open(FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);//打开工作薄文件
Excel.Worksheets=(Excel.Worksheet)wb.Worksheets\[sheet1\];//引用Sheet1工作表
s.Cells\[1,1\]=111;//向A1单元格输出数据
s.Cells\[1,2\]=222;//向B1单元格输出数据
wb.Save();//保存工作薄
wb.Close(false,Type.Missing,Type.Missing);//关闭工作薄
app.Quit();//结束Excel对象
wb=null;
wbs=null;
app=nul
文档评论(0)