C#操作Excel文件

cjwcommonuse 2013-11-27 10:19:38
最近在学习C#操作EXcel文件,在网上某博文中找到这么一段:
====================================================================================
Visual C#中调用Excel的COM组件

在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到"Microsoft Excel 9.0 Object Library"(Office 2000),然后将其加入到项目的References中即可。Visual C#.NET会自动产生相应的.NET组件文件,以后即可正常使用。

  这个转换形成.NET组件不能单独使用,它不过是以前的COM组件的一个外层包装,在.NET中可以通过这个外层包装去发现原来的COM组件并调用其相应的界面函数。所以它必须与原来的COM组件一起起作用。

  2、Visual C#打开Excel表格

  事实上,在C#中使用一个经转换的COM组件和使用任何一个其它.NET组件完全一样。可以用new关键字创建一个经转换的COM组件,然后再像使用任何一个其它C#对象一样使用这个组件对象。

  在转换后的.NET组件中定义了一个命名空间Excel,在此命名空间中封装了一个类Application,这个类和启动Excel表格有非常重要的关系,在Visual C#中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:

Excel.Application excel = new Excel.Application ();//引用Excel对象
excel.Application.Workbooks.Add ( true );//引用Excel工作簿
excel.Visible = true ;//使Excel可视
===================================================================================
于是我按照以上步骤操作,结果发现


请问这是为什么啊?
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vitohe 2013-12-18
  • 打赏
  • 举报
回复
using Excel = Microsoft.Office.Interop.Excel;
夜轻风 2013-11-27
  • 打赏
  • 举报
回复
using Microsoft.Office.Interop;
夜轻风 2013-11-27
  • 打赏
  • 举报
回复
他那还是"Microsoft Excel 9.0 Object Library"(Office 2000)的呢,你机器上估计是2007或者2010吧,重新引用Microsoft Excel 12.0 Object Library或者Microsoft Excel 14.0 Object Library 另外引用完了你得using Microsoft.Office.Interop.Excel;
cjwcommonuse 2013-11-27
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
你在命名空间里实例化类 真是搞笑。 写个类再在类里面写个函数比如 class bb { void aa() { Excel.Application excel = new Excel.Application ();//引用Excel对象 excel.Application.Workbooks.Add ( true );//引用Excel工作簿 excel.Visible = true ;//使Excel可视 } }
前辈教训的是。 我改了,出现了这个警告和这个错误: 警告 2 找不到类型库“Excel”的包装程序集。请验证 (1) 是否已正确注册 COM 组件,以及 (2) 目标平台与 COM 组件的位元是否相同。例如,如果 COM 组件为 32 位,目标平台就不能为 64 位。 CSharpTest 错误 3 未能找到类型或命名空间名称“Excel”(是否缺少 using 指令或程序集引用?) H:\code\projects\CSharpTest\CSharpTest\Test.cs 13 13 CSharpTest ================================ 是因为我电脑是64位的缘故么?
風箏線已斷 2013-11-27
  • 打赏
  • 举报
回复
新建的页面也不会是这样的吧,怎么就直接实例化了。。。。
江湖评谈 2013-11-27
  • 打赏
  • 举报
回复
你在命名空间里实例化类 真是搞笑。 写个类再在类里面写个函数比如 class bb { void aa() { Excel.Application excel = new Excel.Application ();//引用Excel对象 excel.Application.Workbooks.Add ( true );//引用Excel工作簿 excel.Visible = true ;//使Excel可视 } }
琴弦里的海 2013-11-27
  • 打赏
  • 举报
回复
没有using excel的控件吧?
熙风 2013-11-27
  • 打赏
  • 举报
回复
引用 6 楼 cjwcommonuse 的回复:
[quote=引用 5 楼 UR_Not_Alone 的回复:] using Microsoft.Office.Interop;
我电脑上的是office 2003,应该不是COM组件选择的问题,Microsoft Excel XX.0 Object Library这玩意列表里只有一个,[/quote] 把这个引用进来
vbloveshllm 2013-11-27
  • 打赏
  • 举报
回复
命名空间下面包含的当前类的构造函数,其他函数,所以需要新建一个构造函数,就是在类里面声明刚才你的excle读取操作
cjwcommonuse 2013-11-27
  • 打赏
  • 举报
回复
引用 5 楼 UR_Not_Alone 的回复:
using Microsoft.Office.Interop;
我电脑上的是office 2003,应该不是COM组件选择的问题,Microsoft Excel XX.0 Object Library这玩意列表里只有一个,

110,534

社区成员

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

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

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