VB.net如何将经常引用的Excel封装Excel.dll? .net开发经常会操作EXcel,且引用Microsoft Excel 11.0 Object Library(Microsoft.Offce.Core),但有时Excel版本太多(97、2000、2003等),请问如何将其封装,解决版本太多的问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个没有办法很好的解决.如果只是把Excel的数据做导入导出的,不涉及Excel的各种格式的操作,建议把Excel当做数据库来操作,用Oledb去连接,如果是对Excel的操作比较复杂并格式控制较多,还真的不能很好的处理Office的多版本问题. ,建议把Excel当做数据库来操作,用Oledb去连接 俺操作的就是:对Excel的操作格式控制较多 顶。不会启动Excel ,找到一段这样写的:为了在C#中使用Excel,我们要先做一点准备工作,通过查找(前提是你安装Visual Studio.Net和Excel 2000),在你的计算机中找到TlbImp和Excel9.olb,将他们复制到一个文件夹中,在DOS窗口中执行 TlbImp Excel9.olb,这时会产生以下三个文件:Excel.dll、Office.dll和VBIDE.dll。 我是OFFICE2003,.Net2005,找不到Excel9.olb,启动不了Excel,应该怎么办? office2003:TlbImp Excel.exe可是生成Excel.dll protected void Button1_Click(object sender, EventArgs e) { Excel.Application excel = new Excel.Application(); excel.Application.Workbooks.Add ( true ) ; excel.Cells[ 1 , 1 ] = "First Row First Column" ; excel.Cells[ 1 , 2 ] = "First Row Second Column" ; excel.Cells[ 2 , 1 ] = "Second Row First Column" ; excel.Cells[2, 2] = "Second Row Second Column"; excel.Visible = true ; }这样写还是启动不了Excel,有人能指点下吗? 你启动是什么意思,生成excel.dll后,要引入到net中,然后你可以用code 来操作Excel对象.进行复制/删除/制做报表等...... Excel.Application excel = new Excel.Application(); excel.Application.Workbooks.Add ( true ) ;这两行有问题:一是换个名字,可能excel被系统保留了;二是 workbooks对象的ADD方法的参数不对,应该是type.missing吧,试试吧 (以下观点只是个人的一点理解)tblimp程序好像是为COM组件制作interop程序集的。其实interop程序集里面并没有任何的程序实现,只不过是将COM组件和CLR通过一个类似于语句转换的东西进行联系。所以interop程序集是不能单独运行的,仍然需要COM组件。如果我们在.NET IDE里面直接加入一个COM组件的Refrence的话,其实加入到Project里面的只是这个COM组件的interop程序集而已。如果目标机器上面没有这个COM组件或者这个组件没有注册的话,仍然是无法运行的。关于Excel多版本的问题,我觉得通过Interop是无法解决的。这就好像我们的.NET程序如何解决1.1、2.0和3.0之间的问题。我们能做的只有:(1)不在.NET Project里面直接Refrence Excel的COM组件。(2)使用CreateObject来实例化Excel对象。(3)所有Excel对象都声明为Object,用晚期绑定实现。(4)尽量少使用Excel自己提供的方法,特别是一些高级方法,比如Sort。这些方法通常由于Excel版本的提升而有所改变。但是偏重底层的,比如Cell、Range则一般不会有太大改变。(5)强调客户本程序只适用于某(几)个版本的Excel。不要为此造成自己项目的损失。一个便捷的开发方法是可以在本地引用好Excel组件,不使用晚期绑定。这样各种方法属性都可以进行类型检查。Release之前将Excel引用去掉,然后变换为Object声明。 求助:如何利用smtp协议接收邮件? 为什么输出都是A.Fun1?请详解,谢谢~ javascript怎么获取repeater的绑定数据值 c#注册码怎么做 C1FlexGrid 如何实现选中单元格的拖动 顶者有分! 无聊,想做一个看球赛比分的客户端软件? 怎么制作.NET的安装程序 如何在MS Chart 控件上面游标旁边显示所在点的数据 ? datagridview传值到combox 请问,怎么学c#windows 编程? 程序抛出了“正在终止线程”的异常 ReadProcessMemory在C#中怎么用?
如果是对Excel的操作比较复杂并格式控制较多,还真的不能很好的处理Office的多版本问题.
对Excel的操作格式控制较多
TlbImp Excel.exe可是生成Excel.dll protected void Button1_Click(object sender, EventArgs e)
{
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add ( true ) ;
excel.Cells[ 1 , 1 ] = "First Row First Column" ;
excel.Cells[ 1 , 2 ] = "First Row Second Column" ;
excel.Cells[ 2 , 1 ] = "Second Row First Column" ;
excel.Cells[2, 2] = "Second Row Second Column";
excel.Visible = true ;
}这样写还是启动不了Excel,有人能指点下吗?
excel.Application.Workbooks.Add ( true ) ;
这两行有问题:
一是换个名字,可能excel被系统保留了;
二是 workbooks对象的ADD方法的参数不对,应该是type.missing吧,试试吧
tblimp程序好像是为COM组件制作interop程序集的。其实interop程序集里面并没有任何的程序实现,只不过是将COM组件和CLR通过一个类似于语句转换的东西进行联系。所以interop程序集是不能单独运行的,仍然需要COM组件。
如果我们在.NET IDE里面直接加入一个COM组件的Refrence的话,其实加入到Project里面的只是这个COM组件的interop程序集而已。如果目标机器上面没有这个COM组件或者这个组件没有注册的话,仍然是无法运行的。
关于Excel多版本的问题,我觉得通过Interop是无法解决的。这就好像我们的.NET程序如何解决1.1、2.0和3.0之间的问题。我们能做的只有:
(1)不在.NET Project里面直接Refrence Excel的COM组件。
(2)使用CreateObject来实例化Excel对象。
(3)所有Excel对象都声明为Object,用晚期绑定实现。
(4)尽量少使用Excel自己提供的方法,特别是一些高级方法,比如Sort。这些方法通常由于Excel版本的提升而有所改变。但是偏重底层的,比如Cell、Range则一般不会有太大改变。
(5)强调客户本程序只适用于某(几)个版本的Excel。不要为此造成自己项目的损失。一个便捷的开发方法是可以在本地引用好Excel组件,不使用晚期绑定。这样各种方法属性都可以进行类型检查。Release之前将Excel引用去掉,然后变换为Object声明。