Java中操纵JCOM操作Office对象[Java编程]
本文“Java中操纵JCOM操作Office对象[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
通过利用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中操纵JCOM操作Office对象[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |