注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > Java 内容正文:Java中使用JCOM操作Office对象

Java中使用JCOM操作Office对象

发布时间:2006-05-08 16:13:58 来源:天极网 网友评论 0 条

  通过使用COM技术,我们用微软Office应用程序能够建立很多应用程序扩展,但是Java开发人员却无法享受它带来的便利--除非他们拥有方便的Java访问COM的途径(Java-to-COM桥)。使用JCom的时候,你可以在Java中控制几乎所有的COM对象,而且它还带有一些用于Excel的强大的辅助类。

  在你每次编写用HTML表格样式或Java表格对象显示数据的应用程序的时候,通常都需要带有"导出到Excel"功能。那么头疼的问题就出现了。怎么样实现这种功能呢?在HTML中显示的可以在Office 2003中处理吗?没有这么好!你还必须支持Office 97!

  你只能去找一个符合当前需求的工具了,但是接着收到更多的要求了。"这能在Word中做到吗?Powerpoint能做到吗?能不能用调制解调器拨号到远程服务器上并发布数据?Java无法实现这些功能是什么意思啊?Java可以实现任何功能。"

  感谢作为Java和COM桥梁的框架组件,它使你在遇到这些情况的时候都可以回答"Yes"。Java-COM桥梁使你能够根据自己的需要操作Windows组件--以前这是VB、C++和.NET开发人员的领地。你通过实现一个与DCOM后端(back end)对话的Java前端(front end),可以远离端对端(end-to-end)的COM系统。在本文的末尾,你可以使用其中一个Java-to-COM桥:它可以被命名为JCom。

  Excel基础知识

  开始之前,你需要首先从Sourceforge网站下载API。它包含了JCom所使用的Java类的所有源代码、C++代码和JCom用于配置Java和COM的编译好的DLL。把这个DLL放到你的Java主目录的/bin/目录下面,否则会出现问题。同时,为了不出现问题,还要正确地设置JAVA_HOME环境变量。JCom的大多数文档目前都是用日语写的,但是翻译工作正在进行中,因此以后会有些改进的。

  下载和安装过程完成以后,用列表1中的代码试一试。这段代码会建立到Excel的JCom接口,并把"Hello World"写入第一个单元格中。你可以看到如图1所示的结果。尽管JCom是一个通用的COM类库,但是还是带有很多用于Excel的辅助类,这是因为Excel可能是最常用的自动化COM应用程序。这些辅助类可以为我们节省很多时间,它们使JCOM成为一个更好的类库了。

  列表1:开始使用JCOM和Excel

import jp.ne.so_net.ga2.no_ji.jcom.excel8.*;
import jp.ne.so_net.ga2.no_ji.jcom.*;

public class testSimple
{
public static void main(String[] args) throws Exception {
ReleaseManager rm = new ReleaseManager();
try {
System.out.println("EXCEL is Starting...");
ExcelApplication excel = new ExcelApplication(rm);
excel.Visible(true);
ExcelWorkbooks xlBooks = excel.Workbooks();
ExcelWorkbook xlBook = xlBooks.Add();
ExcelWorksheets xlSheets = xlBook.Worksheets();
ExcelWorksheet xlSheet = xlSheets.Item(1);
ExcelRange xlRange = xlSheet.Cells();
xlRange.Item(1,1).Value("Hello, World!" );
}
catch(Exception e) { e.printStackTrace(); }
finally { rm.release(); }
}
}


图1:Java中使用Excel的第一个COM自动化


  如果曾经使用VB或VBA来自动化Excel,那么你应该很熟悉列表1中的代码了。ExcelApplication类暴露了Workbooks()属性,它列举出Excel中当前打开的工作薄(workbook),并允许你向运行的Excel副本增加或删除工作薄。使用.Add()方法增加工作薄,这个方法会返回一个工作薄的引用。

  在Excel中工作薄用于保存输入的数据。工作薄是XLS文件的基础。一个工作薄由多个工作表(worksheet,在图1中有三个工作表,分别叫做Sheet1、Sheet2和Sheet3)。工作表通过Item属性来枚举。你可以使用这个属性访问特定的工作表。在图1中,Sheet 1是第一个工作表,因此你可以使用xlSheets.Item(1)来获取对它的引用。

  有了工作表之后,你就可以使用range(范围)来操作它上面的数据。Range是一个单元格或多个单元格。例如,单元格A1可以使用range (1,1)来引用,接着可以使用Value属性把数据载入单元格中。

  更有意义的例子

  假设你希望把Excel作为数据库中某些数据的表现层。在Java中你希望通过JDBC获取数据,并把数据显示在Excel前端。这种假设是很好的,因为复杂业务逻辑中的用例(use case)已经用Excel前端显示了,更不用说工作流中的其它的数据项的显示和交互操作了。现在你不需要了解业务逻辑或分析,就可以使用原始的电子表格,并使用Java中的自动化来"填充它们之间的裂痕"。

  我将给出一个演示这种操作的简单示例:本文下载中所包含的内容是建立比较销售行为的一个简单的MySQL数据库的。它有三个表:

  · Sales是销售的细节信息,包括销售项、数量、销售价格、是谁销售的以及销售地区。

  · People包含销售人员的姓名和佣金。

  · Districts包含了销售地区的名称和税率。

  生成报表的时候,你需要使用下面的业务逻辑来算出真正的数值:

  · 毛销售额等于销售项乘以销售价格加上地税金额。

  · 纯销售额等于毛销售额减去销售人员提取的税前佣金。

  这都是一些在Java中可以实现的简单直接的计算过程,但是我在本文中使用它们的目的是演示如何把这些数据写入Excel电子表格并让Excel自动计算。对于更复杂的情况(使用了更复杂的Excel公式),原理也是一样的。

  此外,下载的内容中还包含了如图2所示的电子表格。它是作为"模板"供你填充适当的数据的电子表格。


图2:用于前端填充数据的Excel模板

相关文章
  • Java中合并XML文档的设计与实现
  • 在Java中使用Draw2D和SWT绘图
  • Java中将数据由UTF8转换成GB2312格式
  • Java中正则表达式使用方法详解
  • 全面理解Java中的String数据类型
【评论】【收藏本文】【打印】【关闭】
上一篇文章:CORBA对象生命周期之生命周期的评估
下一篇文章:CORBA对象生命周期之实现和内存管理
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Java控件设计入门
Java控件设计入门
推荐阅讯
  • JavaOne 2006 不容错过的十大看点
  • JavaOne 大会焦点关注 Ajax也疯狂
  • 详解Java规则引擎与其API
  • 全面解析Java中的String数据类型
  • 最大化J2EE和数据库交互操作的性能
  • 实战体会Java的多线程编程
  • 初学者入门 JAVA 的 XML 编程实例解析
  • Java Applet编程显示图像(1)
  • 书评:Java的盛宴(下)
  • Java多线程编程基础之线程对象
阅读排行
  • 1.Java连接SQL Server 2000
  • 2.Java文件操作详解
  • 3.Java控件设计入门
  • 4.Java操作Excel电子表格
  • 5.Java: JNI完全手册
  • 6.Java命令行简介
  • 7.开发J2EE应用应遵循的几点原则
  • 8.Servlet与Javabean配置
  • 9.Java规则引擎与其API应用详解
  • 10.CLASSPATH详解
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载