Java Excel API的使用
Java Excel API(JXL)是一个成熟开源的Java类库,用来操作Excel电子表格,支持读取,修改,写入等操作。这个项目基于GPL发布,与poi比较,对中文有很好的支持。而且支持PNG格式图片以及各种数字类型。
当然poi除了可以生成excel格式文件外,还支持pdf、doc等。
该项目网址是http://www.andykhan.com/jexcelapi/,不过这个经常上不了,所以可以直接到sourceforge下载类库,地址为:
https://sourceforge.net/projects/jexcelapi/
我下载的是jexcelapi_2_6_10.zip 2009年5月28日发布的
下面以此为例进行简单说明。
一、 解压
将下载后的文件(如jexcelapi_2_6_10.zip)解压,里面有好多目录,包括例子、文档和源码,其中对项目有用的只有jxl.jar,把它引入或放入项目的classpath目录。
二、新建测试类,创建excel文件
import java.io.*;
import jxl.*;
import jxl.write.*;
public class WriteExcel {
/**
* written by http://www.sunleap.com
*/
public static void main(String[] args) {
try
{
//下面创建Excel文件
WritableWorkbook book=Workbook.createWorkbook(new File("c://test.xls"));
//下面生成名为"第一页"的工作表Sheet,参数0表示这是第一页
WritableSheet sheet=book.createSheet("第一页",0);
//下面使用Label对象在单元格第1行第1列(0,0)构造一个标签,内容为"网址"
jxl.write.Label label1=new jxl.write.Label(0,0,"网址");
//将定义好的单元格(0,0)添加到工作表中
sheet.addCell(label1);
//下面使用Label对象在单元格第1行第2列(1,0)构造一个标签,内容为"站长"
jxl.write.Label label2=new jxl.write.Label(1,0,"站长");
//将定义好的单元格(1,0)添加到工作表中
sheet.addCell(label2);
//下面使用Label对象在单元格第1行第3列(2,0)构造一个标签,内容为"访问量"
jxl.write.Label label3=new jxl.write.Label(2,0,"访问量");
//将定义好的单元格(2,0)添加到工作表中
sheet.addCell(label3);
//下面向文件中插入两行记录
sheet.addCell(new jxl.write.Label(0,1,"http://www.sunleap.com"));
sheet.addCell(new jxl.write.Label(1,1,"sunleap"));
sheet.addCell(new jxl.write.Number(2,1,1000));
sheet.addCell(new jxl.write.Label(0,2,"http://www.isosee.cn"));
sheet.addCell(new jxl.write.Label(1,2,"isosee"));
sheet.addCell(new jxl.write.Number(2,2,1189));
//向文件写入数据并关闭文件
book.write();
book.close();
}catch(Exception e)
{
System.out.println(e);
}
System.out.println("操作结束!");
}
}
执行后,会在C盘生成一个名称为”test.xsl”的Excel文件。
三、读取文件
下面代码读取刚才生成的Excel文件,代码如下:
import java.io.*;
import jxl.*;
public class ReadExcel {
/**
* written by http://www.sunleap.com
*/
public static void main(String[] args) {
try{
Workbook book=Workbook.getWorkbook(new File("c://test.xls"));
//获得第一个工作表对象
Sheet sheet=book.getSheet(0);
//得到第2行第1列的单元格
Cell cell1=sheet.getCell(0,1);
String result=cell1.getContents();
System.out.println(result);
book.close();
}catch(Exception e){
System.out.println(e);
}
}
}
程序执行结果:http://www.sunleap.com
四、修改文件
修改文件代码如下:
import java.io.*;
import jxl.*;
import jxl.write.*;
public class UpdateExcel {
/**
* written by http://www.sunleap.com
*/
public static void main(String[] args) {
try {
//获得Excel文件
Workbook wb=Workbook.getWorkbook(new File("c://test.xls"));
//打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book=
Workbook.createWorkbook(new File("c://test.xls"),wb);
//添加一个工作表eet,在第一行第一列填写内容
WritableSheet sheet=book.createSheet("第二页",1);
sheet.addCell(new Label(0,0,"http://www.sunleap.com"));
book.write();
book.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("操作结束!");
}
}
执行结果是在原有文件中加入了一个新的工作表
Excel文件往往有多行多列,可以进行循环读写,下面例子是循环读取excel文件的参考代码:
Workbook book=Workbook.getWorkbook(new File("c://test.xls"));
//获得第一个工作表
Sheet sheet=book.getSheet(0);
//得到行列数
int columnum=sheet.getColumns();
int rownum=sheet.getRows();/
for(int i=0;i< rownum {
for(int j=0;j<columnum{
Cell cell1=sheet.getCell(j,i);
String result=cell1.getContents();
System.out.print(result);
System.out.print("/t");
}
System.out.println();
}
book.close();
另外,j Excel API的其他功能,如格式化单元格、合并单元格、插入图片等参见帮助文件.