第二个灵魂 发表于 2015-1-18 11:45:10

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

JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。excelWorkbook类供应的办法

  1.intgetNumberOfSheets()

  取得事情薄(Workbook)中事情表(Sheet)的个数,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
intsheets=rwb.getNumberOfSheets();

  2.Sheet[]getSheets()

  前往事情薄(Workbook)中事情表(Sheet)对象数组,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
Sheet[]sheets=rwb.getSheets();

  3.StringgetVersion()

  前往正在利用的API的版本号,仿佛是没甚么太年夜的感化。

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
StringapiVersion=rwb.getVersion();

  Sheet接口供应的办法

  1)StringgetName()

  猎取Sheet的称号,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
StringsheetName=rs.getName();

  2)intgetColumns()

  猎取Sheet表中所包括的总列数,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
intrsColumns=rs.getColumns();

  3)Cell[]getColumn(intcolumn)

  猎取某一列的一切单位格,前往的是单位格对象数组,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
Cell[]cell=rs.getColumn(0);

  4)intgetRows()

  猎取Sheet表中所包括的总行数,示例:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
intrsRows=rs.getRows();

  5)Cell[]getRow(introw)

  猎取某一行的一切单位格,前往的是单位格对象数组,示例子:

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
Cell[]cell=rs.getRow(0);

  6)CellgetCell(intcolumn,introw)

  猎取指订单元格的对象援用,必要注重的是它的两个参数,第一个是列数,第二个是行数,这与一般的行、列组合有些分歧。

jxl.Workbookrwb=jxl.Workbook.getWorkbook(newFile(sourcefile));
jxl.Sheetrs=rwb.getSheet(0);
Cellcell=rs.getCell(0,0);

  2、天生新的Excel事情薄

  上面的代码次要是向人人先容怎样天生复杂的Excel事情表,在这里单位格的内容是不带任何润色的(如:字体,色彩等等),一切的内容都作为字符串写进。(完全代码见ExcelWriting.java)

  与读取Excel事情表类似,起首要利用Workbook类的工场办法创立一个可写进的事情薄(Workbook)对象,这里要注重的是,只能经由过程API供应的工场办法来创立Workbook,而不克不及利用WritableWorkbook的机关函数,由于类WritableWorkbook的机关函数为protected范例。示例代码片断以下:

importjava.io.*;
importjxl.*;
importjxl.write.*;
…………
try
{
//构建Workbook对象,只读Workbook对象
//Method1:创立可写进的Excel事情薄
jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile(targetfile));

//Method2:将WritableWorkbook间接写进到输入流
/*
OutputStreamos=newFileOutputStream(targetfile);
jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(os);
*/
}
catch(Exceptione)
{
e.printStackTrace();
}

  API供应了两种体例来处置可写进的输入流,一种是间接天生当地文件,假如文件名不带全路径的话,缺省的文件会定位在以后目次,假如文件名带有全路径的话,则天生的Excel文件则会定位在响应的目次;别的一种是将Excel对象间接写进到输入流,比方:用户经由过程扫瞄器来会见Web服务器,假如HTTP头设置准确的话,扫瞄器主动挪用客户真个Excel使用程序,来显现静态天生的Excel电子表格。

  接上去就是要创立事情表,创立事情表的办法与创立事情薄的办法几近一样,一样是经由过程工场形式办法取得响应的对象,该办法必要两个参数,一个是事情表的称号,另外一个是事情表在事情薄中的地位,参考上面的代码片断:

//创立Excel事情表
jxl.write.WritableSheetws=wwb.createSheet("TestSheet1",0);

"这锅也支好了,质料也筹办完全了,能够入手下手下锅了!",如今要做的只是实例化API所供应的Excel基础数据范例,并将它们增加到事情表中就能够了,参考上面的代码片断:
//1.增加Label对象
jxl.write.LabellabelC=newjxl.write.Label(0,0,"ThisisaLabelcell");
ws.addCell(labelC);

//增加带有字型Formatting的对象
jxl.write.WritableFontwf=newjxl.write.WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
jxl.write.WritableCellFormatwcfF=newjxl.write.WritableCellFormat(wf);
jxl.write.LabellabelCF=newjxl.write.Label(1,0,"ThisisaLabelCell",wcfF);
ws.addCell(labelCF);

//增加带有字体色彩Formatting的对象
jxl.write.WritableFontwfc=newjxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
Underlinestyle.NO_UNDERLINE,jxl.format.Colour.RED);
jxl.write.WritableCellFormatwcfFC=newjxl.write.WritableCellFormat(wfc);
jxl.write.LabellabelCFC=newjxl.write.Label(1,0,"ThisisaLabelCell",wcfFC);
ws.addCell(labelCF);

//2.增加Number对象
jxl.write.NumberlabelN=newjxl.write.Number(0,1,3.1415926);
ws.addCell(labelN);

//增加带有formatting的Number对象
jxl.write.NumberFormatnf=newjxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormatwcfN=newjxl.write.WritableCellFormat(nf);
jxl.write.NumberlabelNF=newjxl.write.Number(1,1,3.1415926,wcfN);
ws.addCell(labelNF);

//3.增加Boolean对象
jxl.write.BooleanlabelB=newjxl.write.Boolean(0,2,false);
ws.addCell(labelB);

//4.增加DateTime对象
jxl.write.DateTimelabelDT=newjxl.write.DateTime(0,3,newjava.util.Date());
ws.addCell(labelDT);

//增加带有formatting的DateFormat对象
jxl.write.DateFormatdf=newjxl.write.DateFormat("ddMMyyyyhh:mm:ss");
jxl.write.WritableCellFormatwcfDF=newjxl.write.WritableCellFormat(df);
jxl.write.DateTimelabelDTF=newjxl.write.DateTime(1,3,newjava.util.Date(),wcfDF);
ws.addCell(labelDTF);

  这里有两点人人要引发人人的注重。第一点,在机关单位格时,单位格在事情表中的地位就已断定了。一旦创立后,单位格的地位是不克不及够变动的,只管单位格的内容是能够改动的。第二点,单位格的定位是依照上面如许的纪律(column,row),并且下标都是从0入手下手,比方,A1被存储在(0,0),B1被存储在(1,0)。

  最初,不要健忘封闭翻开的Excel事情薄对象,以开释占用的内存,拜见上面的代码片断:

//写进Exel事情表
wwb.write();

//封闭Excel事情薄对象
wwb.close();

  这大概与读取Excel文件的操纵有极少分歧,在封闭Excel对象之前,你必需要先挪用write()办法,由于先前的操纵都是存储在缓存中的,以是要经由过程该办法将操纵的内容保留在文件中。假如你先封闭了Excel对象,那末只能失掉一张空的事情薄了。

  3、拷贝、更新Excel事情薄

  接上去扼要先容一下怎样更新一个已存在的事情薄,次要是上面二步操纵,第一步是机关只读的Excel事情薄,第二步是使用已创立的Excel事情薄创立新的可写进的Excel事情薄,参考上面的代码片断:(完全代码见ExcelModifying.java)

//创立只读的Excel事情薄的对象
jxl.Workbookrw=jxl.Workbook.getWorkbook(newFile(sourcefile));

//创立可写进的Excel事情薄对象
jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile(targetfile),rw);

//读取第一张事情表
jxl.write.WritableSheetws=wwb.getSheet(0);

//取得第一个单位格对象
jxl.write.WritableCellwc=ws.getWritableCell(0,0);

//判别单位格的范例,做出响应的转化
if(wc.getType()==CellType.LABEL)
{
Labell=(Label)wc;
l.setString("Thevaluehasbeenmodified.");
}

//写进Excel对象
wwb.write();

//封闭可写进的Excel对象
wwb.close();

//封闭只读的Excel对象
rw.close();

  之以是利用这类体例构建Excel对象,完整是由于效力的缘故原由,由于下面的示例才是API的次要使用。为了进步功能,在读取事情表时,与数据相干的一些输入信息,一切的格局信息,如:字体、色彩等等,是不被处置的,由于我们的目标是取得行数据的值,既使没有了润色,也不会对行数据的值发生甚么影响。独一的倒霉的地方就是,在内存中会同时保留两个一样的事情表,如许当事情表体积对照年夜时,会占用相称年夜的内存,但如今仿佛内存的巨细并非甚么关头要素了。

  一旦取得了可写进的事情表对象,我们就能够对单位格对象举行更新的操纵了,在这里我们不用挪用API供应的add()办法,由于单位格已于事情表傍边,以是我们只必要挪用响应的setXXX()办法,就能够完成更新的操纵了。

  尽单位格原本的格局化润色是不克不及往失落的,我们仍是能够将新的单位格润色加上往,以使单位格的内容以分歧的情势体现。

  重生成的事情表对象是可写进的,我们除更新原本的单位分外,还能够增加新的单位格到事情表中,这与示例2的操纵是完整一样的。

  最初,不要健忘挪用write()办法,将更新的内容写进到文件中,然后封闭事情薄对象,这里有两个事情薄对象要封闭,一个是只读的,别的一个是可写进的。
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?

小女巫 发表于 2015-1-21 13:53:54

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

第二个灵魂 发表于 2015-1-28 08:17:22

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

谁可相欹 发表于 2015-1-30 21:57:16

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

若相依 发表于 2015-2-6 16:12:24

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

仓酷云 发表于 2015-2-17 02:47:43

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

深爱那片海 发表于 2015-3-5 14:40:02

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

透明 发表于 2015-3-11 15:22:39

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

爱飞 发表于 2015-3-15 22:24:02

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

简单生活 发表于 2015-3-19 23:25:58

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

admin 发表于 2015-3-27 13:11:09

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

莫相离 发表于 2015-3-30 20:15:50

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

只想知道 发表于 2015-4-1 06:38:37

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

灵魂腐蚀 发表于 2015-4-4 02:23:03

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

山那边是海 发表于 2015-4-23 05:24:26

科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

再见西城 发表于 2015-5-1 17:08:25

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

愤怒的大鸟 发表于 2015-5-7 22:29:31

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

分手快乐 发表于 2015-6-5 06:50:59

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

若天明 发表于 2015-6-9 06:05:04

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

因胸联盟 发表于 2015-6-25 11:25:56

是一种语言,用以产生「小应用程序(Applet(s))
页: [1]
查看完整版本: JAVA网站制作之周全发掘Java Excel API 利用办法(2)