VB.net如何将经常引用的Excel封装Excel.dll?

因为想念才会寂寞 2007-01-16 03:24:28
.net开发经常会操作EXcel,且引用Microsoft Excel 11.0 Object Library(Microsoft.Offce.Core),但有时Excel版本太多(97、2000、2003等),请问如何将其封装,解决版本太多的问题?
...全文
1188 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZSLYYY 2010-11-24
  • 打赏
  • 举报
回复
这样问题还是解决不了啊
LoveMango 2007-02-27
  • 打赏
  • 举报
回复
mark
farrio 2007-01-24
  • 打赏
  • 举报
回复
(以下观点只是个人的一点理解)
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声明。
lfywyq 2007-01-20
  • 打赏
  • 举报
回复
Excel.Application excel = new Excel.Application();
excel.Application.Workbooks.Add ( true ) ;
这两行有问题:
一是换个名字,可能excel被系统保留了;
二是 workbooks对象的ADD方法的参数不对,应该是type.missing吧,试试吧
  • 打赏
  • 举报
回复
你启动是什么意思,生成excel.dll后,要引入到net中,然后你可以用code 来操作Excel对象.进行复制/删除/制做报表等......
wind_rove 2007-01-18
  • 打赏
  • 举报
回复
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,有人能指点下吗?
wind_rove 2007-01-18
  • 打赏
  • 举报
回复
在线等..........................
wind_rove 2007-01-18
  • 打赏
  • 举报
回复
顶。不会启动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,应该怎么办?
  • 打赏
  • 举报
回复
俺操作的就是:
对Excel的操作格式控制较多
gzxiaowj 2007-01-17
  • 打赏
  • 举报
回复
,建议把Excel当做数据库来操作,用Oledb去连接
  • 打赏
  • 举报
回复
没有其它方法
sx_lxh 2007-01-16
  • 打赏
  • 举报
回复
关注
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
这个没有办法很好的解决.

如果只是把Excel的数据做导入导出的,不涉及Excel的各种格式的操作,建议把Excel当做数据库来操作,用Oledb去连接,
如果是对Excel的操作比较复杂并格式控制较多,还真的不能很好的处理Office的多版本问题.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧