在C#如何开发基于Excel的程序

原创|其它|编辑:郝浩|2009-03-03 17:14:01.000|阅读 945 次

概述: 所有Excel的程序操作都来源于Excel的对象库Excel9.olb.本例也只是对这个东东做一个简单的操作了解。 首先的一步就是使用Tlbimp这个工具将Excel9.0的对象库文件Excel8.olb转换成为dll,这样才能做为.Net平台Assembly来使用:)操作如下: TlbImp Excel9.olb Excel.dll 只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了。 下面就让我们具体看看C#是如何使用这些东东吧。 1. 创建一个新Excel的Application: Application exc = new Application(

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

首先的一步就是使用Tlbimp这个工具将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);


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP