快速业务通道

在SWT中使用OLE操作Excel(二):为Excel的A1单元格赋值 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
用都是通过OlE定义的Id获得,获得各个对象的Id方法稍后会进行说明

所有的动作都通过OleAutomation对象进行,OleAutomation可以代表任一OLE对象,如Workbook、Worksheet、Range。可以通过getProperty()方法获得它的属性,也可以用setProperty()方法为它的属性赋值

Variant对象一般是封装了OLE对象的值,可以通过它进行值传入及获得相应的值,也可以通过它获得OleAutomation对象

如果想对单元格进行操作(如:赋值、取值),则:

首先要取得Workbook的引用:

OleAutomation workbook = new OleAutomation(clientSite);

在这里OleClientSite对象就代表着Workbook对象,需要把OleClientSite转换成OleAutomation对象以便进行下一步动作

然后需要获得第一个Sheet页的引用:

OleAutomation sheet = workbook.getProperty(SHEET_ID,new Variant[]{new Variant(1)}).getAutomation();

需要知道Worksheet的Id(0x000001e5),因为在OLE中获得Worksheet的方法是的返回值是一个数组,所以需要传入一个参数“1”,表示数组的第一个元素,在这里参数“1”是通 过new Variant[]{new Variant(1)}传入的

获得A1单元格的引用:

Variant cellA1Variant = sheet.getProperty(CELL_ID, new Variant[]{new Variant("A1")});OleAutomation cellA1 = cellA1Variant.getAutomation();

在OLE中代表单元格的是Range:范围,可以表示一个单元格也可以表示一个单元格区域。实际上一个单元格就是一个特殊的Range, Range的Id是0x000000c5。Range是通过Worksheet   获得的,需要传入的参数为字符串(用Variant进行包装),可以为一个(代表一个单元格,如new Variant[]{new Variant("A1")}),也可以为两个(代表一个单元格区域,如new Variant[]{new    Variant("A1"), new Variant("D4")}),因为我们要对单元格进行赋值,所以需要获得Range的OleAutomation对象

在SWT中使用OLE操作Excel(二):为Excel的A1单元格赋值(3)

时间:2011-07-06

为A1单元格赋值:

cellA1.setProperty(CELL_VALUE_ID, new Variant("Hello OLE!"));

Range的值(Value)的属性的Id是0x00000006,在这里传入一个字符串作为单元格的值

获得A1单元格的值:

System.out.println(cellA1Variant.getString());

取值的动作需要通过Variant对象进行,所以获得A1单元格的值就需要通过cellA1Variant对象

获得OLE对象的Id

微软提供一个工具OleView.exe,可列出当前机器上的所有类别信息,以及每一种类别下的组件对象列表,这个工具貌似可以从VS或VC上获得,如果没有这个工具的话也可以上网下,我下的版本在使用的时候少了一个dll库,这个也可以上网去下

查找Excel的Id:

Excel的Id在Document ObjectsàMicrosoft Excel WorkSheet项里,选中这一项可以看到有一些tab页,其中在Registry tab页中记录了该项的详细休息,一项项找,可以发现Excel在我的机子上的Id是Excel.Sheet (VersionIndependentProgID = Excel.Sheet),通过这个Id就可以使用new OleClientSite(oleFrame,SWT.NONE,"Excel.Sheet")这个方法获得Excel的引用了查找Excel组件下的对象(如,WorkSheet、Range)需要打开另一个窗口ITypeLib Viewer:

右键点击Microsoft Excel WorkSheetà选择View Type Information…

在SWT中使用OLE操作Excel(二):为Excel的A1单元格赋值(4)

时间:2011-07-06

获得WorkSheet(因为这个工具没有查找的功能,所以找起来有点费劲,点击Toolbar上的第二个按钮可以进行分类):

因为WorkSheet是通过Workbook获得的(是它的一个属性),而Workbook已经通过OleAu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号