如何在Form中嵌入Excel
如何在Form中嵌入Excel 沐枫网志
1. 首先,需要在工具栏中导入“Microsoft WEB 浏览器”。可以在工具栏上点右键,选择“添加/移除项”。然后在出现的自定义工具箱中选择“COM组件”,最后在组件中找到“Microsoft Web 浏览器”,勾选并确定。
2. 建立一个Form,在工具栏中选择“Microsoft Web浏览器”组件,放到Form中。
3. 使用以下的代码,以便导入一个Excel表格:
4. 加入axWebBrowser1的DocumentComplete事件。并在事件中获取Excel的Ole对象:
private void axWebBrowser1_DocumentComplete(object sender, AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
wb = (Excel.Workbook)axWebBrowser1.Document;
}
5. 通过wb,就可以直接访问Excel表格了。
虽然用IE控件很简单,但并不是一个很好的方法。目前也只有第三方控件,或是期待.NET 2.0了。如果大家有更好的方法,不妨共享一下。
潜在问题:
1. 在使用Office2000时,Excel退出是一个问题。可能导致无法准确让Excel退出,或者Excel在退出时产生错误。这样可能在系统中留下一大堆Excel进程。实践中发现,使用Office2003时,这个问题被解决。OfficeXP和Office2002没有做过试验,不知道是否也解决了。
2. 数据操作比较慢。这是与COM接口相关。对COM有较深了解的话,可以进行许多优化,使效率得到大的提升。
暂时解决方法:
1. 使用Excel2003,可解决Excel退出问题
2. 使用Office Web Components v10/v11 的 SpreadSheet组件目前是一个好的解决方法。
附:
使用OWC,建议使用OWC10或OWC11版本。OWC9因为许可证问题比较麻烦,不建议使用。
SpreadSheet可接受的数据源比较多种,包括 ADODB.RecordSet,csv格式文本,HTML表格格式,以及XML格式,使用上比较灵活,并且可以在SpreadSheet工具栏上直接导出到Excel中。
关于SpreadSheet的使用,网络上有许多文章已经介绍了,在google中就可以搜索得到,希望对大家有所帮助。