|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
经由过程利用COM手艺,我们用微软Office使用程序可以创建良多使用程序扩大,可是Java开辟职员却没法享用它带来的便当--除非他们具有便利的Java会见COM的路子(Java-to-COM桥)。利用JCom的时分,你能够在Java中把持几近一切的COM对象,并且它还带有一些用于Excel的壮大的帮助类。
在你每次编写用HTML表格款式或Java表格对象显现数据的使用程序的时分,一般都必要带有"导出到Excel"功效。那末头疼的成绩就呈现了。怎样完成这类功效呢?在HTML中显现的能够在Office2003中处置吗?没有这么好!你还必需撑持Office97!
你只能往找一个切合以后需求的工具了,可是接着收到更多的请求了。"这能在Word中做到吗?Powerpoint能做到吗?能不克不及用调制解调器拨号到远程服务器上并公布数据?Java没法完成这些功效是甚么意义啊?Java能够完成任何功效。"
感激作为Java和COM桥梁的框架组件,它使你在碰到这些情形的时分都能够回覆"Yes"。Java-COM桥梁使你可以依据本人的必要操纵Windows组件--之前这是VB、C++和.NET开辟职员的领地。你经由过程完成一个与DCOM后端(backend)对话的Java前端(frontend),能够阔别端对端(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接口,并把"HelloWorld"写进第一个单位格中。你能够看到如所示的了局。只管JCom是一个通用的COM类库,可是仍是带有良多用于Excel的帮助类,这是由于Excel多是最经常使用的主动化COM使用程序。这些帮助类能够为我们节俭良多工夫,它们使JCOM成为一个更好的类库了。
列表1:入手下手利用JCOM和Excel
importjp.ne.so_net.ga2.no_ji.jcom.excel8.*;
importjp.ne.so_net.ga2.no_ji.jcom.*;
publicclasstestSimple
{
publicstaticvoidmain(String[]args)throwsException{
ReleaseManagerrm=newReleaseManager();
try{
System.out.println("EXCELisStarting...");
ExcelApplicationexcel=newExcelApplication(rm);
excel.Visible(true);
ExcelWorkbooksxlBooks=excel.Workbooks();
ExcelWorkbookxlBook=xlBooks.Add();
ExcelWorksheetsxlSheets=xlBook.Worksheets();
ExcelWorksheetxlSheet=xlSheets.Item(1);
ExcelRangexlRange=xlSheet.Cells();
xlRange.Item(1,1).Value("Hello,World!");
}
catch(Exceptione){e.printStackTrace();}
finally{rm.release();}
}
}
<br>
:Java中利用Excel的第一个COM主动化
假如已经利用VB或VBA来主动化Excel,那末你应当很熟习列表1中的代码了。ExcelApplication类表露了Workbooks()属性,它枚举出Excel中以后翻开的事情薄(workbook),并同意你向运转的Excel正本增添或删除事情薄。利用.Add()办法增添事情薄,这个办法会前往一个事情薄的援用。
在Excel中事情薄用于保留输出的数据。事情薄是XLS文件的基本。一个事情薄由多个事情表(worksheet,在中有三个事情表,分离叫做Sheet1、Sheet2和Sheet3)。事情表经由过程Item属性来列举。你可使用这个属性会见特定的事情表。在中,Sheet1是第一个事情表,因而你可使用xlSheets.Item(1)来猎取对它的援用。
有了事情表以后,你就能够利用range(局限)来操纵它下面的数据。Range是一个单位格或多个单位格。比方,单位格A1可使用range(1,1)来援用,接着可使用Value属性把数据载进单位格中。
更成心义的例子
假定你但愿把Excel作为数据库中某些数据的体现层。在Java中你但愿经由过程JDBC猎取数据,并把数据显现在Excel前端。这类假定是很好的,由于庞大营业逻辑中的用例(usecase)已用Excel前端显现了,更不必说事情流中的别的的数据项的显现和交互操纵了。如今你不必要懂得营业逻辑或剖析,就能够利用原始的电子表格,并利用Java中的主动化来"添补它们之间的裂缝"。
我将给出一个演示这类操纵的复杂示例:本文下载中所包括的内容是创建对照发卖举动的一个复杂的MySQL数据库的。它有三个表:
·Sales是发卖的细节信息,包含发卖项、数目、发卖代价、是谁发卖的和发卖区域。
·People包括发卖职员的姓名和佣金。
·Districts包括了发卖区域的称号和税率。
天生报表的时分,你必要利用上面的营业逻辑来算出真实的数值:
·毛发卖额即是发卖项乘以发卖代价加上地税金额。
·纯发卖额即是毛发卖额减往发卖职员提取的税前佣金。
这都是一些在Java中能够完成的复杂间接的盘算历程,可是我在本文中利用它们的目标是演示怎样把这些数据写进Excel电子表格并让Excel主动盘算。关于更庞大的情形(利用了更庞大的Excel公式),道理也是一样的。
别的,下载的内容中还包括了如所示的电子表格。它是作为"模板"供你添补得当的数据的电子表格。
<br>
:用于前端添补数据的Excel模板
<p>
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 |
|