冷月葬花魂 发表于 2015-1-18 11:45:10

JAVA网站制作之周全发掘Java Excel API 利用办法(1)

多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。excel利用Windows操纵体系的伴侣对Excel(电子表格)必定不会生疏,可是要利用Java言语来利用Excel文件并非一件简单的事。在Web使用日趋流行的明天,经由过程Web来操纵Excel文件的需求愈来愈激烈,今朝较为盛行的操纵是在JSP或Servlet中创立一个CSV(commaseparatedvalues)文件,并将这个文件以MIME,text/csv范例前往给扫瞄器,接着扫瞄器挪用Excel而且显现CSV文件。如许只是说能够会见到Excel文件,可是还不克不及真实的利用Excel文件,本文将给人人一个欣喜,向人人先容一个开放源码项目,JavaExcelAPI,利用它人人就能够便利地利用Excel文件了。

  JavaExcelAPI简介

  JavaExcel是一开放源码项目,经由过程它Java开辟职员能够读取Excel文件的内容、创立新的Excel文件、更新已存在的Excel文件。利用该API非Windows操纵体系也能够经由过程纯Java使用来处置Excel数据表。由于是利用Java编写的,以是我们在Web使用中能够经由过程JSP、Servlet来挪用API完成对Excel数据表的会见。

  如今公布的不乱版本是V2.0,供应以下功效:

   从Excel95、97、2000等格局的文件中读取数据;
   读取Excel公式(能够读取Excel97今后的公式);
   天生Excel数据表(格局为Excel97);
   撑持字体、数字、日期的格局化;
   撑持单位格的暗影操纵,和色彩操纵;
   修正已存在的数据表;

  如今还不撑持以下功效,但不久就会供应了:

   不克不及够读取图表信息;
   能够读,可是不克不及天生公式,任何范例公式最初的盘算值都能够读出;
 
  使用示例

  1、从Excel文件读取数据表

  JavaExcelAPI既能够从当地文件体系的一个文件(.xls),也能够从输出流中读取Excel数据表。读取Excel数据表的第一步是创立Workbook(术语:事情薄),上面的代码片断举例申明了应当怎样操纵:(完全代码见ExcelReading.java)

importjava.io.*;
importjxl.*;
…………
try
{
//构建Workbook对象,只读Workbook对象
//间接从当地文件创立Workbook
//从输出流创立Workbook
InputStreamis=newFileInputStream(sourcefile);
jxl.Workbookrwb=Workbook.getWorkbook(is);
}
catch(Exceptione)
{
e.printStackTrace();
}
  一旦创立了Workbook,我们就能够经由过程它来会见ExcelSheet(术语:事情表)。参考上面的代码片断:

//猎取第一张Sheet表
Sheetrs=rwb.getSheet(0);
  我们既大概经由过程Sheet的称号来会见它,也能够经由过程下标来会见它。假如经由过程下标来会见的话,要注重的一点是下标从0入手下手,就像数组一样。

  一旦失掉了Sheet,我们就能够经由过程它来会见ExcelCell(术语:单位格)。参考上面的代码片断:

//猎取第一行,第一列的值
Cellc00=rs.getCell(0,0);
Stringstrc00=c00.getContents();

//猎取第一行,第二列的值
Cellc10=rs.getCell(1,0);
Stringstrc10=c10.getContents();

//猎取第二行,第二列的值
Cellc11=rs.getCell(1,1);
Stringstrc11=c11.getContents();

System.out.println("Cell(0,0)"+"value:"+strc00+";type:"+c00.getType());
System.out.println("Cell(1,0)"+"value:"+strc10+";type:"+c10.getType());
System.out.println("Cell(1,1)"+"value:"+strc11+";type:"+c11.getType());
  假如仅仅是获得Cell的值,我们能够便利地经由过程getContents()办法,它能够将任何范例的Cell值都作为一个字符串前往。示例代码中Cell(0,0)是文本型,Cell(1,0)是数字型,Cell(1,1)是日期型,经由过程getContents(),三品种型的前往值都是字符型。

  假如有必要晓得Cell内容切实其实切范例,API也供应了一系列的办法。参考上面的代码片断:

Stringstrc00=null;
doublestrc10=0.00;
Datestrc11=null;

Cellc00=rs.getCell(0,0);
Cellc10=rs.getCell(1,0);
Cellc11=rs.getCell(1,1);

if(c00.getType()==CellType.LABEL)
{
LabelCelllabelc00=(LabelCell)c00;
strc00=labelc00.getString();
}
if(c10.getType()==CellType.NUMBER)
{
NmberCellnumc10=(NumberCell)c10;
strc10=numc10.getvalue();
}
if(c11.getType()==CellType.DATE)
{
DateCelldatec11=(DateCell)c11;
strc11=datec11.getDate();
}

System.out.println("Cell(0,0)"+"value:"+strc00+";type:"+c00.getType());
System.out.println("Cell(1,0)"+"value:"+strc10+";type:"+c10.getType());
System.out.println("Cell(1,1)"+"value:"+strc11+";type:"+c11.getType());
  在失掉Cell对象后,经由过程getType()办法能够取得该单位格的范例,然后与API供应的基础范例相婚配,强迫转换成响应的范例,最初挪用响应的取值办法getXXX(),就能够失掉断定范例的值。API供应了以下基础范例,与Excel的数据格局绝对应,以下图所示:

  每品种型的详细意义,请拜见JavaExcelAPIdocument.

  当你完成对Excel电子表格数据的处置后,必定要利用close()办法来封闭先前创立的对象,以开释读取数据表的过程当中所占用的内存空间,在读取大批数据时显得尤其主要。参考以下代码片断:

//操纵完成时,封闭对象,开释占用的内存空间
rwb.close();
  JavaExcelAPI供应了很多会见Excel数据表的办法,在这里我只扼要地先容几个经常使用的办法,别的的办法请参考附录中的JavaExcelAPIdocument.

首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。

金色的骷髅 发表于 2015-1-21 13:53:45

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

只想知道 发表于 2015-1-21 15:15:10

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

蒙在股里 发表于 2015-1-30 20:13:07

是一种突破用户端机器环境和CPU

山那边是海 发表于 2015-1-30 21:57:16

是一种语言,用以产生「小应用程序(Applet(s))

再现理想 发表于 2015-2-6 16:12:24

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

深爱那片海 发表于 2015-2-17 02:47:43

Java 编程语言的风格十分接近C、C++语言。

飘飘悠悠 发表于 2015-3-5 14:26:23

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

精灵巫婆 发表于 2015-3-7 00:51:43

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

灵魂腐蚀 发表于 2015-3-11 15:22:39

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

莫相离 发表于 2015-3-15 22:24:02

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

仓酷云 发表于 2015-3-16 11:38:51

Java是一种计算机编程语言,拥有跨平台、面向对java

不帅 发表于 2015-3-19 23:25:58

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

因胸联盟 发表于 2015-3-21 19:13:29

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

活着的死人 发表于 2015-3-24 18:58:08

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

海妖 发表于 2015-3-27 13:11:09

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

第二个灵魂 发表于 2015-3-30 20:15:50

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

分手快乐 发表于 2015-4-1 06:38:37

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

愤怒的大鸟 发表于 2015-4-7 01:25:37

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

若天明 发表于 2015-4-10 14:54:14

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
页: [1] 2
查看完整版本: JAVA网站制作之周全发掘Java Excel API 利用办法(1)