jxl文档说明-java excel api 说明手册.doc
- 格式:doc
- 大小:105.00 KB
- 文档页数:10
jxl.jar通过java操作excel表格的工具类库支持Excel 95-2000的所有版本生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表应该说以上功能已经能够大致满足我们的需要。
最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
搭建环境将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。
基本操作一、创建文件拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java)://生成Excel的类import java.io.*;import jxl.*;import bel;import jxl.write.Number;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class CreateXLS {public static void main(String args[]) {try {// 打开文件WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"));// 生成名为“第一页”的工作表,参数0表示这是第一页WritableSheet sheet = book.createSheet("第一页", 0);// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)// 以及单元格内容为testLabel label = new Label(0, 0, "test");// 将定义好的单元格添加到工作表中sheet.addCell(label);/** 生成一个保存数字的单元格必须使用Number的完整包路径,否则有语法歧义单元格位置是第二列,第一行,值为789.123*/Number number = new Number(1, 0, 789.123);sheet.addCell(number);// 写入数据并关闭文件book.write();book.close();} catch (Exception e) {System.out.println(e);}}}编译执行后,会在当前位置产生一个Excel文件。
jxl.jar概述通过java操作excel表格的工具类库支持Excel 95-2000的所有版本生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表应该说以上功能已经能够大致满足我们的需要。
最关键的是这套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的类import java.io.*;import jxl.*;import jxl.write.*;public class CreateXLS{public static void main(String args[]){try{//打开文件WritableWorkbook book=Workbook.createWorkbook(new File(“测试.xls”));//生成名为“第一页”的工作表,参数0表示这是第一页WritableSheet sheet=book.createSheet(“第一页”,0);//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)//以及单元格内容为testLabel label=new Label(0,0,”test”);//将定义好的单元格添加到工作表中sheet.addCell(label);/*生成一个保存数字的单元格必须使用Number的完整包路径,否则有语法歧义单元格位置是第二列,第一行,值为789.123*/jxl.write.Number number = new jxl.write.Number(1,0,789.123);sheet.addCell(number);//写入数据并关闭文件book.write();book.close();}catch(Exception e){System.out.println(e);}}}编译执行后,会在当前位置产生一个Excel文件。
笔记——Java操作Excel(poi,jxl)使用poi或jxl操作excel的时候,设置格式,是一件挺麻烦的事情,面对用户的各种格式设置需求,你可能跟我开始时一样,无从下手。
多数格式设置,大家在网上都能很容易的找到答案,但是有一些还难注意或发现。
下边分享一下我的经验:用poi设置excel格式Poi设置单元格格式一般使用HSSFCellStyle:HSSFWorkbook book = new HSSFWorkbook();…HSSFCellStyle style = book.createCellStyle();//创建单元格样式style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置水平居中style.setV erticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置垂直居中style.setBorderTop(HSSFCellStyle.BORDER.THIN);//单元格上边框style.setBorderBottom(HSSFCellStyle.BORDER.THIN);//单元格下边框style.setBorderLeft(HSSFCellStyle.BORDER.THIN);//单元格左边框style.setBorderRight(HSSFCellStyle.BORDER.THIN);//单元格右边框style.setWrapText(true);//设置自动换行(如果没设置高度,则自适应行高度)…HSSFFont font = book.createFont();//创建字体样式font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗…style.setFont(font);//给单元格设置字体样式…HSSFSheet sheet = book.createSheet(“工作表名称”);//创建工作表sheet.getPrintSetup().setLandscape(true);//页面设置横向打印…HSSFRow row = sheet.createRow(0);//第1行HSSFCell cell = row.createCell((shot)0);//第1列cell.setCellStyle(style);//给单元格设置样式cell.setCellV alue(new HSSFRichTextString(“单元格内容”));…Region region = new Region();region.setRowFrom(0);region.setRowTo(0);region.setColumnFrom((shot)0);region.setColumnTo((shot)12);sheet.addMergedRegion(region);//合并第1行的第1到13列用jxl设置excel格式Jxl设置单元格格式一般使用WritableCellFormat:WritableCellFormat format = new WritableCellFormat();//创建单元格样式format.setAlignment(Alignment.LEFT);//设置居左format.setBorder(Border.ALL,BorderLineStyle.THIN);//设置边框…format.setWarp(true);//设置自动换行(如果没设置高度,则自适应行高度)…WritableWorkBook book = null;…WritableSheet sheet = book.createSheet(“工作表名”,i);sheet.getSettings().setOrientation(NDSCAPE);//页面设置横向打印sheet.addCell(new Label(0,1, “单元格内容”,format));//给单元格设置样式sheet.mergeCells(0,2,18,2);//合并第3行的第1到19列不全,后续补充…。
1.1通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL 系统库操作Excel电子表格的应用实例1.1.1JXL系统库相关的应用技术jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API 可供使用,一个是POI,一个是jExcelAPI。
其中功能相对POI比较弱一点。
但jExcelAPI 对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
在项目中使用jxl需要加载jxl的系统库jxl.jar文件,并将它放入项目的classpath 路径中。
1、新建一个Java应用程序项目2、在项目中导入jxl的系统库jar包文件3、创建CreateExcel程序类文件在本项目jxldemo中的test包中创建一个生成Excel的类,类名为CreateExcel。
该类拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”。
4、CreateExcelDemo程序代码package com.px1987.jexcelapi;import java.io.*;import jxl.Workbook;import jxl.write.*;public class CreateExcelDemo {public CreateExcelDemo() throws IOException,WriteException {//在项目所在的根目录下创建一个名称为excelData.xls的Excel 文件WritableWorkbook oneExcelBook = Workbook.createWorkbook(new File("excelData.xls"));//生成名为“2009年销售指标”的工作表,参数0表示这是第一页WritableSheet oneSheetInBook = oneExcelBook.createSheet( "2009年销售指标", 0); //通过Label对象的构造方法中指明单元格位置是第一列第一行以及单元格的数据内容为“销售量”Label oneCell = new Label(0, 0, "销售量" );oneSheetInBook.addCell(oneCell); //将定义好的单元格添加到工作表中//再生成一个单元格,位置为第二列第一行以及单元格的数据内容为“我们所添加的内容”Label twoCell = new Label(1, 0, "我们所添加的内容" );oneSheetInBook.addCell(twoCell); //将定义好的单元格添加到工作表中oneExcelBook.write(); //将所创建出的Excel文件保存到磁盘文件中oneExcelBook.close(); //关闭文件输出流以真正地完成数据输出操作}public static void main(String[] args) throws IOException,WriteException{new CreateExcelDemo();}}5、读取Excel文件中数据的程序代码示例package com.px1987.jexcelapi;import java.io.*;import jxl.*;import jxl.read.biff.BiffException;public class ReadExcelDemo {public ReadExcelDemo() throws BiffException,IOException{Workbook oneExcelBook = Workbook.getWorkbook(new File("excelData.xls"));Sheet firstSheet = oneExcelBook.getSheet(0); //获得第一个工作表对象Cell oneCell1 = firstSheet.getCell(0 , 0); //获得工作表中的第一列第一行的单元格String cellContent = oneCell1.getContents(); //获得该单元格中的内容System.out.println(cellContent);oneExcelBook.close();}public static void main(String[] args) throws BiffException,IOException{new ReadExcelDemo();}}6、修改Excel文件中数据的程序代码示例利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。
Java操作Excel之JXL(填充EXCEL模板)转载Java操作Excel之理解JXL--读取Excel 说到如何⽤JXL读取Excel⽂件,现在来看看如何读取Excel模板然后把动态数据写⼊到模板以⽣成特定格式的Excel。
同样的思路,先来考虑下会涉及到那些对象,和上篇⽂章读取相⽐这⾥涉及到⼀个写⼊的步骤,所以JXL必然会提供⼀个对象来⽀持写⼊,这就是WritableWorkbook。
那么如何得到到这个类的实例,查看APIDoc发现Workbook类提供了⼏个静态的createWorkbook⽅法返回WritableWorkbook实例,可以看到众多createWorkbook⽅法主要分为两类:⼀个参数和两个参数。
简单分析可以得知前者仅仅是⽤来直接⽣成Excel⽂件,后者先读取模板再向模板写⼊数据然后⽣成Excel。
(还有⼀个三参数⽅法加上⼀个⽤来设置workbook的参数)现在按照上篇⽂章中所讲述的流程来看看读取模板并写⼊需要那些步骤。
第⼀步:选择模板⽂件:Workbook wb = Workbook.getWorkbook(new File(realpath));第⼆步:通过模板得到⼀个可写的Workbook:WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);第⼀个参数是⼀个输出流对象,⽐如可以ByteArrayOutputStream targetFile = new ByteArrayOutputStream();这样定义这个输出流对象。
第⼆个参数代表了要读取的模板。
第三步:选择模板中名称为StateResult的Sheet:WritableSheet wws = wwb.getSheet("StateResult");如果需要也可以创建SheetWritableSheet wws = wwb.createSheet("Sheet名称",i);第四步:选择单元格,写⼊动态值,根据单元格的不同类型转换成相应类型的单元格:Label A1 = (Label)wws.getWritableCell(0,0);A1.setString("单元格内容")或Number A2 = (Number)wws.getWritableCell(0,1);//Number是jxl.write.NumberA2.setValue(3.3);也可以创建新的单元格并且加⼊到Sheet中Label C1 = new Label(2,0,"单元格内容");wws.addCell(C1);或Number C1 = new Number(2,0,3.3);wws.addCell(C1);在⽣成Excel报表的时候还会遇到⼀种需求就是数据的格式问题,我们可能希望数值型单元格以某种格式显⽰,⽽字符串型单元格以另⼀种格式显⽰。
JXL操作Excel部分详解(java)// 打开⽂件WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));// ⽣成名为“第⼀页”的⼯作表,参数0表⽰这是第⼀页WritableSheet sheet = book.createSheet( " 第⼀页 " , 0 );// 在Label对象的构造⼦中指名单元格位置是第⼀列第⼀⾏(0,0)// 以及单元格内容为testLabel label = new Label( 0 , 0 , " test " );// 将定义好的单元格添加到⼯作表中sheet.addCell(label);/** ⽣成⼀个保存数字的单元格必须使⽤Number的完整包路径,否则有语法歧义单元格位置是第⼆列,第⼀⾏,值为789.123 */jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );sheet.addCell(number);// 写⼊数据并关闭⽂件book.write();book.close();// 获得第⼀个⼯作表对象Sheet sheet = book.getSheet( 0 );// 得到第⼀列第⼀⾏的单元格Cell cell1 = sheet.getCell( 0 , 0 );String result = cell1.getContents();System.out.println(result);// Excel获得⽂件Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));// 打开⼀个⽂件的副本,并且指定数据写回到原⽂件WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ),wb);// 添加⼀个⼯作表WritableSheet sheet = book.createSheet( " 第⼆页 " , 1 );sheet.addCell( new Label( 0 , 0 , " 第⼆页的测试数据 " ));book.write();book.close();WritableSheet.mergeCells( int m, int n, int p, int q);// 作⽤是从(m,n)到(p,q)的单元格全部合并,⽐如:WritableSheet sheet = book.createSheet(“第⼀页”, 0 );// 合并第⼀列第⼀⾏到第六列第⼀⾏的所有单元格sheet.mergeCells( 0 , 0 , 5 , 0 );Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));// 获得第⼀个⼯作表对象Sheet sheet = book.getSheet( 0 );// 得到第⼀列第⼀⾏的单元格int columnum = sheet.getColumns(); // 得到列数int rownum = sheet.getRows(); // 得到⾏数System.out.println(columnum);System.out.println(rownum);for ( int i = 0 ; i < rownum; i ++ ) // 循环进⾏读写 {for ( int j = 0 ; j < columnum; j ++ ) {Cell cell1 = sheet.getCell(j, i);String result = cell1.getContents();System.out.print(result);System.out.print( " \t " );}System.out.println();}book.close();。
JXL生成的excel文件+JAVA文件下载功能一个需求,用户点击下载按钮,将指定的excel的报表模板使用数据库数据渲染,然后下载到用户本地;通常而言,对于一个文件的下载,可以有以下几种方式:window.location.href=文件名称URL全路径;window.open(文件名称URL全路径);这种方式不友好的地方在于服务器的目录结构直接暴露出去,而且在IE下很有可能会报错权限问题等,甚至firefox中会触发那个年代久远而依然没有解决的bug。
所以这里不推荐。
对于jxl生成excel文件,有两种方式,一种是生成文件保存到磁盘,另一种是直接保存到输出流中。
对于上述需求,如果生成的文件保存到磁盘,随着系统运行,磁盘会主键被占用,需要手动去删除。
由于文件都较小,所以这里采用第二种方式,直接在内存中生成文件,然后提供给用户下载的时候response回去。
看一个例子:用于响应下载请求的controller/*** 下载个人订单* @param request* @param response* @param modelMap*/@RequestMapping(value="/download.do",method=RequestMethod.GET)public void processDownload(HttpServletRequest request,HttpServletResponse response, ModelMap modelMap) {long userId = getUserId(request);String ids = request.getParameter("ids");try {Long[] idarray =getIdsFromStringArray(ids.split(","));if (null == idarray || 0 == idarray.length) { return;}// 直接往response的输出流中写excelOutputStream outputStream =response.getOutputStream();// 获取文件名称String fileName = getUserFileName(userId);// 下载格式设置response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", "attachment; filename=/"" + fileName + "/"");// 读取数据渲染模板并写入outputstream中List<PhAdvertiseOrderDO> advertiseOrderList = phAdvertiseOrderService.getAdvertiseOrderByIds(idarray, userId);outputStream =excelFileService.generalExcelFileInOutputStream(outputStream, advertiseOrderList);outputStream.close();} catch (Exception e) {logger.error("下载报表发生异常!", e);}} </pre>其中调用到的文件服务/* (non-Javadoc)* @seeease.photography.service.ExcelFileService#generalExcelF ileInOutputStream(ng.String, java.io.OutputStream, java.util.List)*/public OutputStreamgeneralExcelFileInOutputStream(OutputStream outputStream,List<PhAdvertiseOrderDO> advertiseOrderList) throws BiffException, IOException, WriteException {// 检查参数是否合法checkParam(tempalteFile,"no File",advertiseOrderList);// 获取模板Workbook templatebook = Workbook.getWorkbook(newFile(tempalteFile));WritableWorkbook writeableWorkbook =Workbook.createWorkbook(outputStream, templatebook);// 读取数据写入模板readDataAndWriteTemplate(templatebook, writeableWorkbook, advertiseOrderList);return outputStream;} </pre>其中的重点就在于WritableWorkbook writeableWorkbook = Workbook.createWorkbook(outputStream, templatebook);这句话指定了写入的数据到输出流中。
jxl导出数据到excel的实例讲解优点:Jxl对中⽂⽀持⾮常好,操作简单,⽅法看名知意。
Jxl是纯javaAPI,在跨平台上表现的⾮常完美,代码可以再windows或者Linux上运⾏⽽⽆需重新编写⽀持Excel 95-2000的所有版本(⽹上说⽬前可以⽀持Excel2007了,还没有尝试过)⽣成Excel 2000标准格式⽀持字体、数字、⽇期操作能够修饰单元格属性⽀持图像和图表,但是这套API对图形和图表的⽀持很有限,⽽且仅仅识别PNG格式。
缺点:效率低,图⽚⽀持不完善,对格式的⽀持不如POI强⼤案例:String times = (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date());String fname = "系统⽇志" + times; // ⽂件名List<Logs> list=logsService.selectForList(hql.toString());String path = request.getSession().getServletContext().getRealPath("/")+ "xls/"+ (new SimpleDateFormat("yyyyMMdd")).format(new Date());File file = new File(path);// 如果⽂件夹不存在则创建if (!file.exists() && !file.isDirectory()) {file.mkdir();}response.setContentType("application/vnd.ms-excel;charset=utf-8");// // 指定⽂件的保存类型。
Java excel API 说明手册作者:Rubber整理:calf 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel 文件并不是一件容易的事。
在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件。
这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵Excel文件了。
JAVA EXCEL API简介Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel 文件、更新已经存在的Excel文件。
使用该API非Windows操作系统也可以通过纯Java应用来处理Excel 数据表。
因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel 数据表的访问。
现在发布的稳定版本是V2.0,提供以下功能:∙从Excel 95、97、2000等格式的文件中读取数据;∙读取Excel公式(可以读取Excel 97以后的公式);∙生成Excel数据表(格式为Excel 97);∙支持字体、数字、日期的格式化;∙支持单元格的阴影操作,以及颜色操作;∙修改已经存在的数据表;现在还不支持以下功能,但不久就会提供了:1. 不能够读取图表信息;2. 可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;应用示例1 从Excel文件读取数据表Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。
参考下面的代码片段:我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。
如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。
一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。
参考下面的代码片段:如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。
示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。
如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。
参考下面的代码片段:在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。
API提供了以下基本类型,与Excel的数据格式相对应,如下图所示:每种类型的具体意义,请参见Java Excel API Document。
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。
参考如下代码片段:Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,其它的方法请参考附录中的Java Excel API Document。
Workbook类提供的方法1. int getNumberOfSheets()获得工作薄(Workbook)中工作表(Sheet)的个数,示例:2. Sheet[] getSheets()返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:3. String getVersion()返回正在使用的API的版本号,好像是没什么太大的作用。
Sheet接口提供的方法1) String getName()获取Sheet的名称,示例:2) int getColumns()获取Sheet表中所包含的总列数,示例:3) Cell[] getColumn(int column)获取某一列的所有单元格,返回的是单元格对象数组,示例:4) int getRows()获取Sheet表中所包含的总行数,示例:5) Cell[] getRow(int row)获取某一行的所有单元格,返回的是单元格对象数组,示例子:6) Cell getCell(int column, int row)获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。
2 生成新的Excel工作薄下面的代码主要是向大家介绍如何生成简单的Excel工作表,在这里单元格的内容是不带任何修饰的(如:字体,颜色等等),所有的内容都作为字符串写入。
(完整代码见ExcelWriting.java)与读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象,这里要注意的是,只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook 的构造函数,因为类WritableWorkbook的构造函数为protected类型。
示例代码片段如下:API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问Web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。
接下来就是要创建工作表,创建工作表的方法与创建工作薄的方法几乎一样,同样是通过工厂模式方法获得相应的对象,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位置,参考下面的代码片段:"这锅也支好了,材料也准备齐全了,可以开始下锅了!",现在要做的只是实例化API所提供的Excel基本数据类型,并将它们添加到工作表中就可以了,参考下面的代码片段:WritableFont.BOLD, true);jxl.write.WritableCellFormat wcfF = newjxl.write.WritableCellFormat(wf);bel labelCF = new bel(1, 0, "This is a Label Cell", wcfF);ws.addCell(labelCF);//添加带有字体颜色Formatting的对象jxl.write.WritableFont wfc = newjxl.write.WritableFont(WritableFont.ARIAL, 10,WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);jxl.write.WritableCellFormat wcfFC = newjxl.write.WritableCellFormat(wfc);bel labelCFC = new bel(1, 0, "This is a Label Cell", wcfFC);ws.addCell(labelCF);//2.添加Number对象jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926); ws.addCell(labelN);//添加带有formatting的Number对象jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); jxl.write.WritableCellFormat wcfN = newjxl.write.WritableCellFormat(nf);jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);ws.addCell(labelNF);//3.添加Boolean对象jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false); ws.addCell(labelB);//4.添加DateTime对象jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());ws.addCell(labelDT);//添加带有formatting的DateFormat对象jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");jxl.write.WritableCellFormat wcfDF = newjxl.write.WritableCellFormat(df);这里有两点大家要引起大家的注意。
第一点,在构造单元格时,单元格在工作表中的位置就已经确定了。
一旦创建后,单元格的位置是不能够变更的,尽管单元格的内容是可以改变的。
第二点,单元格的定位是按照下面这样的规律(column, row),而且下标都是从0开始,例如,A1被存储在(0, 0),B1被存储在(1, 0)。
最后,不要忘记关闭打开的Excel工作薄对象,以释放占用的内存,参见下面的代码片段:这可能与读取Excel文件的操作有少少不同,在关闭Excel对象之前,你必须要先调用write()方法,因为先前的操作都是存储在缓存中的,所以要通过该方法将操作的内容保存在文件中。
如果你先关闭了Excel对象,那么只能得到一张空的工作薄了。
3 拷贝、更新Excel工作薄接下来简要介绍一下如何更新一个已经存在的工作薄,主要是下面二步操作,第一步是构造只读的Excel工作薄,第二步是利用已经创建的Excel工作薄创建新的可写入的Excel工作薄,参考下面的代码片段:(完整代码见ExcelModifying.java)之所以使用这种方式构建Excel对象,完全是因为效率的原因,因为上面的示例才是API的主要应用。