JXL(Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。
jxl是一个韩国人写的java操作excel的工具,虽然功能比POI逊色,但是对中文支持非常好,因为是Java编写的不依赖操作系统,需要注意的是对图表支持不是很有限,仅仅支持png格式。
读取Excel:
Workbook book = Workbook.getWorkbook(new File(" test.xls "));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格
Cell cell1 = sheet.getCell(0, 0);
String result = cell1.getContents();
System.out.println(result);
book.close();
|
生成Excel:
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File(
" test.xls "));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet(" 第一页 ", 0);
// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
// 以及单元格内容为test
Label 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();
|
修改Excel:
// 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();
|
读取xsl:
package example;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.CellType;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
* 【目的】:简单读取一个xsl文件;
* 【导读】:先来看看Excel文件中都有写上面对象
* 1 文件对象 2工作簿对象 3 单元格对象。
* 相应的在JXL中就有Workbook,Sheet ,Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。
* 我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
* 【步骤】:
* <ol>
* <li>选取Excel文件</li>
* <li>选择工作簿</li>
* <li>选择Cell</li>
* <li>读取信息</li>
* </ol>
*
* @author AndyFan*
*/
public class Demo1
{
public static void main(String[] args) throws BiffException, IOException{
//通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = Workbook.getWorkbook(new File("myexcel.xls"));
//通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);
//通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始)
Cell c1 = sheet.getCell(0,1);
//通过Cell的getContents方法把单元格中的信息以字符的形式读取出来
String stringc1 = c1.getContents();
System.out.printf("姓名:%s%n", stringc1);
//我们都知道Excel单元格是有格式的,那么这些信息如何取得。
/*Cell提供了一个getType方法能够返回单元格的类型信息,
同时JXL提供了一个CellType类用来预设Excel中的类型信息,
而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格,
如LabelCell,NumberCell,DateCell分别表示字符、数值、
日期类型的单元格。所以我们可以这样写:*/
Cell c2 = sheet.getCell(1,1);
Double numberb2 = null;
if (c2.getType() == CellType.NUMBER)
{
NumberCell nc = (NumberCell) c2;
numberb2 = nc.getValue();
}
System.out.printf("分数:%.3f%n", numberb2);
System.out.println(numberb2);
//最后不要忘记关闭workbook以释放资源:
workbook.close();
}
}
|