|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
多谢指点,其实我对.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这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。 |
|