荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: sephiroth (bird of paradise), 信区: Newsoftware
标  题: 用C#操作Excel
发信站: 荔园晨风BBS站 (Thu Sep  5 18:59:53 2002), 站内信件


老外操作的是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下面来:)
--




※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.44.81]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店