仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1896|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java中利用JCOM操纵Office对象

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:33:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
小女巫 该用户已被删除
沙发
发表于 2015-1-21 10:03:15 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-22 11:04:21 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
因胸联盟 该用户已被删除
地板
发表于 2015-1-25 12:10:39 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
海妖 该用户已被删除
5#
发表于 2015-2-1 12:12:11 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
只想知道 该用户已被删除
6#
发表于 2015-2-3 12:19:27 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
柔情似水 该用户已被删除
7#
发表于 2015-2-8 22:25:34 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
简单生活 该用户已被删除
8#
发表于 2015-2-26 11:45:32 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
蒙在股里 该用户已被删除
9#
发表于 2015-3-4 04:06:56 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小妖女 该用户已被删除
10#
发表于 2015-3-11 16:21:33 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
第二个灵魂 该用户已被删除
11#
发表于 2015-3-18 19:07:06 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
再现理想 该用户已被删除
12#
发表于 2015-3-26 11:05:12 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
admin 该用户已被删除
13#
发表于 2015-3-30 19:32:12 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
小魔女 该用户已被删除
14#
发表于 2015-4-23 11:15:05 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
老尸 该用户已被删除
15#
发表于 2015-4-27 21:33:27 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
活着的死人 该用户已被删除
16#
发表于 2015-5-10 06:50:24 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
不帅 该用户已被删除
17#
发表于 2015-5-12 01:11:41 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
若天明 该用户已被删除
18#
发表于 2015-6-8 00:29:33 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
乐观 该用户已被删除
19#
发表于 2015-6-8 01:21:14 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
山那边是海 该用户已被删除
20#
 楼主| 发表于 2015-6-11 01:39:02 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 07:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表