用C#操作Excel

ZDNet软件频道 时间:2002-09-03 作者:飞刀 译 |  我要评论()
本文关键词:
老外操作的是Excel 2000,所有Excel的程序操作都来源于Excel的对象库Excel9.olb.本例也只是对这个东东做一个简单的操作了解。

老外操作的是Excel 2000,所有Excel的程序操作都来源于Excel的对象库Excel9.olb.本例也只是对这个东东做一个简单的操作了解。

首先的一步就是使用Tlbimp.exe这个工具将Excel9.0的对象库文件Excel8.olb转换成为dll,这样才能做为.Net平台Assembly来使用:)操作如下:

TlbImp Excel9.olb Excel.dll 

只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了。
下面就让我们具体看看C#是如何使用这些东东吧。

1. 创建一个新Excel的Application:

Application exc = new Application();
if (exc == null) {
Console.WriteLine("ERROR: EXCEL couldn't be started");
return 0;
}

2. 让这个工程可见:

exc.set_Visible(0, true); 

3. 获取WorkBooks集合:

Workbooks workbooks = exc.Workbooks; 

4. 加入新的WorkBook:

_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0); 

5. 获取WorkSheets集合:

_Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
if (worksheet == null) {
Console.WriteLine ("ERROR in worksheet == null");
}

6. 给单元格设置变量:

Range range1 = worksheet.get_Range("C1", Missing.Value);
                 if (range1 == null) {
                          Console.WriteLine ("ERROR: range == null");
                 }
                 const int nCells = 1;
                 Object[] args1 = new Object[1];
                 args1[0] = nCells;
                 range1.GetType().InvokeMember("Value", BindingFlags.SetProperty, null,
        range1, args1);

例程:

using System;
using System.Reflection; 
using System.Runtime.InteropServices; 
using Excel;
 
class Excel {
         public static int Main() {
                 Application exc = new Application();
                 if (exc == null) {
                          Console.WriteLine("ERROR: EXCEL couldn't be started!");
                          return 0;
                 }
                 
                 exc.set_Visible(0, true); 
                 Workbooks workbooks = exc.Workbooks;
                 _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet, 0); 
                 Sheets sheets = workbook.Worksheets;
 
                 _Worksheet worksheet = (_Worksheet) sheets.get_Item(1);
                 if (worksheet == null) {
                          Console.WriteLine ("ERROR: worksheet == null");
                 }
                 
                 Range range1 = worksheet.get_Range("C1", Missing.Value);
                 if (range1 == null) {
                          Console.WriteLine ("ERROR: range == null");
                 }
                 const int nCells = 1;
                 Object[] args1 = new Object[1];
                 args1[0] = nCells;
range1.GetType().InvokeMember("Value", BindingFlags.SetProperty, null,range1, args1);
                 return 100;
         }
}

现在我们来看看如何使用数组,他有些类似于设置单元格。仅仅需要的改变只是args2[0] = array2;

const int nCell = 5;
Range range2 = worksheet.get_Range("A1", "E1");
                 int[] array2 = new int [nCell];
                 for (int i=0; i < array2.GetLength(0); i++) {
                          array2[i] = i+1;
                 }
                 Object[] args2 = new Object[1];
                 args2[0] = array2;
                 range2.GetType().InvokeMember("Value", BindingFlags.SetProperty,
       null, range2, args2);

 

输出结果:

总结:

大家需要了解Tlbimp.exe 这个工具的使用啊:)这个东东很有用,可以将普通Win32程序移植到.Net下面来:)

转自.Net中华网

责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134