版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要:阐述了在 C#winform 程序中,使用 WebBrowser 控件将 Excel 嵌入到窗体内,以实现复杂表格显示和控制的具体方法。关键词:Excel; C#; WebBrowser;复杂表格显示0 引言在开发基于报表的管理信息系统时, 用户可能会明确要求在窗体 上显示他们自己设计的表格, 而这些表格中大多包含有样式非常复杂 的表格。此时,想利用 C#中自带的表格控件实现需求几乎是不可能 的。 Excel 是大众熟悉的电子表格处理软件,其报表处理能力和数据 表现能力都非常强大, 用其制作样式复杂的表格是一件非常简单的事 情。如果能将Excel文件嵌入到C#语言开发的winform程序
2、中,就可 以非常容易地解决在窗体上显示复杂表格的需求, 又能够实现让用户 便捷地编辑数据和导出 Excel 文件等功能。1实现思路虽然 Excel 可以制作样式复杂的表格,但是软件系统的数据都被 存放在数据库内,因此必须编写代码将数据库文件内的数据输出到 Excel 文件内,再将该 Excel 文件内容显示到窗体上就可以满足用户 需求。具体实现思路如下:按照用户设计的表格样式,用Excel制作表格模板文件;为了不破坏模板文件,在使用文件之前,通过代 码复制模板文件,以后的所有操作都在新文件上执行;编写C#程序,通过 ADO.NET 技术从数据库内提取数据,向 Excel 文件的指定单元格输出数
3、据并保存文件;将 Excel文件嵌入到窗体中,供用户 浏览修改,并可以保存修改后的内容。2C#中控制Excel文件的方法2.1引用Excel类型库在C#中控制Excel文件的前提是添加Excel的引用。根据计算机 上安装的 Excel 软件版本的不同,组件名称和类型库的版本也不一样, 此处Excel的版本为2003版本,因此COM组件名称为 Microsoft Excel 11.0 Object Library。引用Excel类型库的具体操作方法为:在解决 方案资源管理器中,右击“引用”菜单项,选择“添加引用”;在“添加引用”对话框中,选择“ COM ”选项卡,并从列表框内选择 Microso
4、ft Excel 11.0 Object Library ;单击“确定”按钮,关闭“添 加引用”对话框。2.2编程控制 Excel引用Excel类型库后,程序中就可以使用 Excel相关的类和接口 来控制 Excel 文件。常用到的 Excel 相关类和接口有 Application (应 用)、Workbook (工作薄)和 Worksheet (工作表)等。2.2.1 逐单元格赋值输出 向样式复杂的 Excel 表格输出数据时,由于单元格的合并拆分等 原因,加上需要向其赋值输出的单元格排列没有任何规律, 所以通常 都会用到逐个单元格赋值输出的方法, 即在程序中一个一个定位单元 格,然后对其
5、赋值输出。例如,向Excel文件“ temp.xls”的Sheet1工作表 A1 单元格输出“ 111”, B1 单元格输出“ 222”的代码为:Excel.Application app = new Excel.Application ();/创建 Excel对象Excel.Workbooks wbs = app.Workbooks; /创建 Excel 工作薄 string FileName = Application.StartupPath + " temp.xls "; Excel.Workbook wb = wbs.Open( FileName, Type.Mis
6、sing,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.Worksheet s =( Excel.Worksheet)wb.Worksheets"sheet1";引用Sheetl工作表s.Cells1,1 =
7、 "111" ; /向 A1 单元格输出数据s.Cells1,2 = "222" ; /向 B1 单元格输出数据wb.Save (); 保存工作薄wb.Close (false, Type.Missing, Type.Missing); 关闭工作薄 app.Quit(); /结束 Excel 对象wb = null;wbs = null;app = null;GC.Collect(); /垃圾收集2.2.2 使用 ADO.NET 直接向 Excel 输出逐单元格赋值输出的方法只适用于少量数据传输, 如果传输的数 据量非常大,则会出现系统假死机现象。因此,
8、在向 Excel 输出大数 据量,且单元格排列也很规律的情况下可以利用 ADO.NET 技术直接 访问Excel文件的方法输出数据。例如,向Excel文件“temp.xls”的 Sheetl工作表A2和B2单元格分别输出“张三”和“ 27”,A3和B3 单元格分别输出“李四”和“ 30”的代码为:/设置连接 Excel 文件的字符串,并打开连接OleDbConnection objConn = new OleDbConnection ( "Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=" + Application.Start
9、upPath +"temp.xls;Extended Properties=Excel 8.0;"); objConn.Open();/将数据作为两条记录插入Excel文件中MyTable的“name"和 “ age”两列OleDbCommand objCmd = new OleDbCommand(); objCmd.Connection = objConn;objCmd.CommandText = "Insert into MyTable(name, age)" + " values ('张三','27
10、9;)";objCmd.ExecuteNonQuery();objCmd.CommandText = "Insert into MyTable(name, age)" +" values ('李四 ', '30')";objCmd.ExecuteNonQuery();/ 关闭连接objConn.Close();在上面的代码中出现了“ MyTable” “nam$和“age”等,这些 都需要提前在 Excel 文件中设置,具体设置方法如下:(1) 打开“ temp.xls ”文件,在Sheetl表的A1单元格中输入
11、 name,在B1单元格中输入aga这一步是在设置列名。(2) 先选中A1 : B1,然后选择“插入” | “名称” | “定义”菜 单项。(3) 在“定义名称”对话框中输入名称 MyTable,然后单击“确 定”按钮。这一步是在设置表名。(4) 保存并退出“ temp.xls ”文件。至此,“temp.xls ”文件的设置已经全部设置好,运行上面的程 序后,该文件 S h e et 1表中就会多出两行记录,运行结果如图 1 所示。2.3使用 WebBrowser显示、编辑和另存 Excel文件WebBrowser是C#中的一种浏览器控件,它是 In ternet Explorer 的一部分,
12、所以只能在安装了 Internet Explorer 的系统上使用。该控 件最大的特点是, 在其内不仅可以显示网页内容, 也可以显示 Word、 Excel、 PowerPoint 和 pdf 等格式的文件内容。例如,下面的代码将“ temp.xls”文件内容显示到 WebBrowser控件。string str = Application.StartupPath + " temp.xls "; webBrowser1.Navigate(str);当 Excel 文件被嵌入到 WebBrowser 控件后,就可以像在 Excel 软件内操作那样,对其数据进行编辑更新。通过WebBrowser控件的ShowSaveAsDialog方法还可以另存嵌入其内的文件,具体语句为:webBrowser1.ShowSaveAsDialog();3 结语在基于C#语言的winform程序中,使用 WebBrowser控件将Excel 嵌入到窗体内, 在同一个系统界面中实现复杂表格显示和控制的方法 非常实用。但如果用户计算机内安装的是 Office 2007 ,则会影响 Excel 文件在WebBrowser中的嵌入显示。所以在针对Office 2007开发的应 用程序,笔者不建议使用本文的方法显示表格数据。参考文献:1 如何使用 Vi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44435-2024信息与文献数字文件(档案)转换和迁移过程
- GB/T 25216-2024煤与瓦斯突出危险性区域预测方法
- 合伙协议书签订时的法律审查
- 2024年黄沙石子供货合同范本
- 专业承包工地食堂合同书模板
- 合作经营生意合同协议
- 800字代办委托协议范本
- 房产按揭贷款借款协议示例
- 咖啡店外卖服务合同
- 2024年二手车购买协议格式
- 2023老年重症患者静脉血栓栓塞症预防中国专家共识
- 汽车发动机构造与维修参考文献
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 完整版全国行政区域身份证代码表(EXCEL版)TextMarkTextMark
- 配电房设备运行记录表
- 猪营养体系课件-整理
- 某水电站防洪影响评价呈文
- T-CRA 002-2023 客运索道安全运营应急预案编写指南
- 2023年春江苏开放大学《江苏红色文化》过程性考核作业一二和综合大作业+参考答案
- 生物化学实验智慧树知到答案章节测试2023年浙江大学
- 学生视力检测分析报告及整改措施
评论
0/150
提交评论