本文从Excel对象、C#中的受管代码和非受管代码、Visual C#中调用Excel的COM组件等三个部分详细介绍了如何使用C# Excel COM组件。

在学习C# Excel COM组件运用之前,咱们先学习一下Excel方针。

C# Excel COM组件的运用(c#操作excel组件)  COM组件 第1张

1 Excel方针

微软的Excel方针模型包括了128个不同的方针,从矩形,文本框等简略的方针到透视表,图表等杂乱的方针.下面咱们简略介绍一下其间最重要,也是用得最多的四个方针。

(1) Application方针。Application方针处于Excel方针层次结构的顶层,表明Excel自身的运转环境。 (2) Workbook方针。Workbook方针直接地处于Application方针的基层,表明一个Excel作业薄文件。

(3) Worksheet方针。Worksheet方针包括于Workbook方针,表明一个Excel作业表。

(4) Range方针。Range方针包括于Worksheet方针,表明Excel作业表中的一个或多个单元格。

2 C#中的受管代码和非受管代码

在.NET共用言语结构内运转的程序为受管代码。受管代码在程序中所有类型都受到严厉查看,没有指针,对内存的办理彻底由运转体系控制。受控状态下,编写 程序更为简略,且更少犯错,咱们能够花更多的时刻在处理实际问题上而不是在计算机言语问题上。相对而言,那些在.NET结构外运转的程序为非受管代码。比 如:COM组件、ActiveX组件、Win32 API函数、指针运算等。C#编程中在某些特定情况下,需求运用非受管代码,例如,要运用一个老练的COM组件,或许调用一个API函数,或许用指针去编 写实时/高效程序等。

3 Visual C#中调用Excel的COM组件

一个.NET组件事实上是一个.NET下的DLL,它包括的不仅是运转程序自身,更重要的是包括这个DLL的描绘信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)贮存其描绘信息。这些COM组件都对错受管代码,要在Visual C#中运用这些非受管代码的COM组件,就有必要把他们转化成受管代码的.NET组件。所以在用Visual C#调用Excel表格之前,有必要完结从COM组件的非受管代码到受管代码的类库的转化。

3.1 将Excel的COM组件转化为.NET组件

在项目中翻开Add Reference对话框,挑选COM栏,之后在COM列表中找到“Microsoft Excel 9.0 Object Library”(Office 2000),然后将其加入到项目的References中即可。Visual C#.NET会主动发生相应的.NET组件文件,今后即可正常运用。

这个转化构成.NET组件不能独自运用,它不过是曾经的COM组件的一个外层包装,在.NET中能够经过这个外层包装去发现本来的COM组件并调用其相应的界面函数。所以它有必要与本来的COM组件一同起作用。

3.2 Visual C#翻开Excel表格

事实上,在C#中运用Excel COM组件(一个经转化的)和运用任何一个其它.NET组件彻底相同。能够用new关键字创立一个经转化的COM组件,然后再像运用任何一个其它C#方针相同运用这个组件方针。

在转化后的.NET组件中界说了一个命名空间Excel,在此命名空间中封装了一个类Application,这个类和发动Excel表格有非常重要的关 系,在Visual C#中,只需求下列三行代码就能够完结翻开Excel表格的作业,详细如下:

  1. Excel.Applicationexcel=newExcel.Application();//引证Excel方针
  2. excel.Application.Workbooks.Add(true);//引证Excel作业簿
  3. excel.Visible=true//使Excel可视

但此刻的Excel表格是一个空的表格,没有任何内容,下面就来介绍怎么往Excel表格中输入数据。

3.3 往Excel表格中输入数据

在命名空间"Excel"中,还界说了一个类"Cell",这个类所代表的便是Excel表格中的一个单元格。经过给"Cell"赋值,然后完成往Excel表格中输入相应的数据,下列代码功用是翻开Excel表格,而且往表格输入一些数据。

  1. Excel.Applicationexcel=newExcel.Application();
  2. excel.Application.Workbooks.Add(true);
  3. excel.Cells[1,1]="FirstRowFirstColumn"
  4. excel.Cells[1,2]="FirstRowSecondColumn"
  5. excel.Cells[2,1]="SecondRowFirstColumn"
  6. excel.Cells[2,2]="SecondRowSecondColumn"
  7. excel.Visible=true;

3.4 C# Excel COM组件运用实例

下面实例在C#中衔接Oracle数据库(Name),从表(TableName)中读取数据,并写入Excel.

  1. stringcnString="Provider=msdaora.1;Datasource=Name;";
  2. cnString=cnString+"userid=UserName;password=Password";
  3. try
  4. {
  5. OleDbConnectioncn=newOleDbConnection(cnString);
  6. cn.Open();
  7. try
  8. {
  9. strings="select*fromName.TableName";
  10. OleDbCommandcmd=newOleDbCommand(s,cn);
  11. OleDbDataReaderdr=cmd.ExecuteReader();
  12. Excel.ApplicationxlApp=newExcel.Application();
  13. if(xlApp==null){MessageBox.Show("Can’topenExcel!");return;}
  14. xlApp.Application.Workbooks.Add(true);
  15. introw=2,fieldcount;
  16. fieldcount=dr.FieldCount;
  17. for(intcol=0;col<fieldcount;col++)xlApp.Cells[1,col+1]=dr.GetName(col);
  18. while(dr.Read())
  19. {
  20. for(intcol=0;col<fieldcount;col++)
  21. xlApp.Cells[row,col+1]=dr.GetValue(col).ToString();
  22. row++;
  23. }
  24. xlApp.Visible=true;
  25. xlApp=null;
  26. }
  27. catch(Exceptionex){MessageBox.Show(ex.Message);}
  28. finally{cn.Close();}
  29. }
  30. catch(Exceptionex){MessageBox.Show(ex.Message);}
  31. }
  32. }

3.5装置一个运用COM组件的.NET程序

假如要将这样的程序装置运转在另一台机器上,那么除了装置运转程序外,还做三件事。

首要,是装置.NET运转体系。由于任何一个.NET程序都不能脱离.NET运转体系去独立运转。

其次,所调用的COM组件有必要要装置在方针机器上。本例中大大都方针机器上都装有Microsoft Office的Excel,一般不会有这个问题。但假如是另一个用户自界说的COM组件,那么这个COM组件在运转.NET程序之前有必要先装置好。

***,转化后的.NET组件DLL文件要装置在方针机器上。由于.NET组件不需求在Windows Registry中注册,所以最简略的办法是将.NET组件DLL文件拷贝到运转程序目录下。假如此.NET组件被多个.NET程序同享,能够将其装置 在.NET共用组件区中,然后可被任何一个.NET组件运用。只有当一个.NET组件参加了事务处理时,才需求将它注册为一个COM+组件。由于.NET 依然用传统的COM+机制来处理事务的提交、回滚等。

4 小结

经过以上评论,咱们知道了怎么运用C# Excel COM组件。需求留意的是,Excel方针包括的许多内容咱们没有介绍,在运用过程中需求咱们不断学习。

【修改引荐】

  1. WebBrowser控件的常用办法、特点和事情
  2. C#动态生成Word文档并填充数据
  3. C#动态调用Web服务的3种办法
  4. 服务器+客户端的谈天程序
  5. C#类与方针的差异
转载请说明出处
知优网 » C# Excel COM组件的运用(c#操作excel组件)

发表评论

您需要后才能发表评论