您好,欢迎访问三七文档
Jxl.jar学习手册通过java操作excel表格的工具类库支持Excel95-2000的所有版本生成Excel2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。搭建环境:将下载后的文件解包,得到JXL.JAR,放入classpath,安装就完成了。如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。基本操作:一、创建文件拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java)://生成Excel的类importjava.io.*;importjxl.*;importjxl.write.*;publicclassCreateXLS{publicstaticvoidmain(String[]args){try{//打开文件WritableWorkbookbook=Workbook.createWorkbook(newFile(d:/测试.xls));//生成名为“第一页”的工作表,参数0表示这是第一页WritableSheetsheet=book.createSheet(第一页,0);//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)//以及单元格内容为testLabellabel=newLabel(0,0,test);//将定义好的单元格添加到工作表中sheet.addCell(label);/**生成一个保存数字的单元格**必须使用Number的完整包路径,否则有语法歧义**单元格位置是第二列,第一行,值为789.123*/jxl.write.Numbernumber=newjxl.write.Number(1,0,789.123);sheet.addCell(number);//写入数据并关闭文件book.write();book.close();}catch(Exceptione){System.out.println(e.toString());}}}编译执行后,会在当前位置产生一个Excel文件。二、读取文件以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下://读取Excel的类importjava.io.*;importjxl.*;publicclassReadXLSDemo{publicstaticvoidmain(String[]args){try{Workbookbook=Workbook.getWorkbook(newFile(d:/测试.xls));//获得第一个工作表对象Sheetsheet=book.getSheet(0);//得到第一列第一行的单元格Cellcell1=sheet.getCell(0,0);Stringresult=cell1.getContents();System.out.println(result);//Number以String获得Cellcell2=sheet.getCell(1,0);result=cell2.getContents();System.out.println(result);book.close();}catch(Exceptione){System.out.println(e);}}}程序执行结果:test三、修改文件利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表://修改Excel的类,添加一个工作表importjava.io.*;importjxl.*;importjxl.write.*;publicclassUpdateXLSDemo{publicstaticvoidmain(String[]args){try{//Excel获得文件Workbookwb=Workbook.getWorkbook(newFile(d:/测试.xls));//打开一个文件的副本,并且指定数据写回到原文件WritableWorkbookbook=Workbook.createWorkbook(newFile(d:/测试.xls),wb);//添加一个工作表WritableSheetsheet=book.createSheet(第二页,1);sheet.addCell(newLabel(0,0,第二页的测试数据));book.write();book.close();}catch(Exceptione){System.out.println(e);}}}修改原有内容,直接重新创建一遍即可。高级操作:一、数据格式化在Excel中不涉及复杂的数据类型,能够比较好的处理字符串、数字和日期已经能够满足一般的应用。1、字串格式化字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:WritableFontfont1=newWritableFont(WritableFont.TIMES,16,WritableFont.BOLD);或设置字体格式为excel支持的格式WritableFontfont3=newWritableFont(WritableFont.createFont(楷体_GB2312),12,WritableFont.NO_BOLD);①WritableCellFormatformat1=newWritableCellFormat(font1);②Labellabel=newLabel(0,0,”data4test”,format1);③其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。③处使用了Label类的构造子,指定了字串被赋予那种格式。在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定://把水平对齐方式指定为居中format1.setAlignment(jxl.format.Alignment.CENTRE);//把垂直对齐方式指定为居中format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//设置自动换行format1.setWrap(true);----------------------------------------------------------------------------------------------------------------publicclassWritablelFormatDemo{publicstaticvoidmain(String[]args){try{//创建一个xlsWritableWorkbookbook=Workbook.createWorkbook(newFile(d:/shadow.xls));//工作表WritableSheetsheet=book.createSheet(first,0);//字体格式1WritableFontfont1=newWritableFont(WritableFont.ARIAL,16,WritableFont.BOLD);//字体格式2WritableFontfont2=newWritableFont(WritableFont.ARIAL,16,WritableFont.NO_BOLD);//格式化单元格WritableCellFormatformat1=newWritableCellFormat(font1);WritableCellFormatformat2=newWritableCellFormat(font2);//把水平对齐方式指定为居中format1.setAlignment(jxl.format.Alignment.CENTRE);//把垂直对齐方式指定为居中format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//设置自动换行format1.setWrap(true);//单元格内容Labellabel=newLabel(0,0,姓名,format1);Labellabe2=newLabel(1,0,年龄,format1);Labellabe3=newLabel(2,0,性别,format1);//将定义好的单元格添加到工作表中sheet.addCell(label);sheet.addCell(labe2);sheet.addCell(labe3);//构造数据Listlist=newArrayList();Mapmap1=newHashMap();map1.put(name,哇哈哈);map1.put(age,23);map1.put(sex,男);list.add(map1);Mapmap2=newHashMap();map2.put(name,禽兽);map2.put(age,99);map2.put(sex,女);list.add(map2);Iteratorit=list.iterator();introw=1;//控制写入的行while(it.hasNext()){Mapm=newHashMap();m=(Map)it.next();IteratorkeyValuePairs1=m.entrySet().iterator();for(inti=0;im.size();i++){Map.Entryentry=(Map.Entry)keyValuePairs1.next();//Objectkey=entry.getKey();Objectvalue=entry.getValue();Labellabe=newLabel(i,row,value.toString(),format2);sheet.addCell(labe);}row++;}book.write();book.close();}catch(Exceptione){e.printStackTrace();}}}----------------------------------------------------------------------------------------------------------------二、单元格操作Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。1、合并单元格WritableSheet.mergeCells(intm,intn,intp,intq);作用是从(m,n)到(p,q)的单元格全部合并,比如:WritableSheetsheet=book.createSheet(“第一页”,0);//合并第一列第一行到第六列第一行的所有单元格sheet.mergeCells(0,0,5
本文标题:jxl学习手册
链接地址:https://www.777doc.com/doc-2879579 .html