jxl是一个韩国人写的java操作excel的东西, 在开源国际中,有两套比拟有影响的API可供运用,一个是POI,一个是jExcelAPI。其间功用相对POI比拟弱一点。但jExcelAPI对中文撑持非常好,API是纯Java的, 并不依靠Windows体系,即便运行在Linux下,它相同能够正确的处置Excel文件。 别的需求阐明的是,这套API对图形和图表的撑持很有限,而且只是辨认PNG格局。
运用如下:
建立环境
将下载后的文件解包,得到jxl.jar,放入classpath,装置就完成了。
根本操作
一、创立文件
拟生成一个名为“test.xls”的Excel文件,其间榜首个作业表被命名为
“榜首页”,大致作用如下:
package test;
//生成Excel的类
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class CreateExcel {
public static void main(String args[]) {
try {
// 翻开文件
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();
} catch (Exception e) {
System.out.println(e);
}
}
}
编译履行后,会发生一个Excel文件。
三、读取文件
以方才咱们创立的Excel文件为例,做一个简略的读取操作,程序代码如下:
package test;
//读取Excel的类
import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
public class ReadExcel {
public static void main(String args[]) {
try {
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();
} catch (Exception e) {
System.out.println(e);
}
}
}
程序履行成果:test
四、修正文件
运用jExcelAPI能够修正已有的Excel文件,修正Excel文件的时分,除了翻开文件的办法不相同之外,
其他操作和创立Excel是相同的。下面的比方是在咱们现已生成的Excel文件中增加一个作业表:
package test;
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class UpdateExcel {
public static void main(String args[]) {
try {
// 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();
} catch (Exception e) {
System.out.println(e);
}
}
}
其他操作
一、 数据格局化
在Excel中不触及杂乱的数据类型,能够比拟好的处置字串、数字和日期现已能够满意通常的运用。
1、 字串格局化
字符串的格局化触及到的是字体、粗细、字号等元素,这些功用主要由WritableFont和
WritableCellFormat类来担任。假定咱们在生成一个富含字串的单元格时,运用如下句子,
为便利叙说,咱们为每一行指令加了编号:
WritableFont font1=
new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①
WritableCellFormat format1=new WritableCellFormat(font1); ②
Label label=new Label(0,0,”data 4 test”,format1) ③
其间①指定了字串格局:字体为TIMES,字号16,加粗显现。WritableFont有非常丰富的
结构子,供不相同情况下运用,jExcelAPI的java-doc中有具体列表,这里不再列出。
②处代码运用了WritableCellFormat类,这个类非常重要,经过它能够指定单元格的各种
特点,后面的单元格格局化中会有更多描绘。
③处运用了Label类的结构子,指定了字串被赋予那种格局。
在WritableCellFormat类中,还有一个很重要的办法是指定数据的对齐办法,比方对于咱们
上面的实例,能够指定:
//把水平对齐办法指定为居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
//把笔直对齐办法指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
二、单元格操作
Excel中很重要的一部分是对单元格的操作,比方行高、列宽、单元格兼并等,所幸jExcelAPI
供给了这些撑持。这些操作相对比拟简略,下面只分析一下关联的API。
1、 兼并单元格
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);
兼并既能够是横向的,也能够是纵向的。兼并后的单元格不能再次进行兼并,不然会触发反常。
2、 行高和列宽
WritableSheet.setRowView(int i,int height);
//作用是指定第i+1行的高度,比方:
//将榜首行的高度设为200
sheet.setRowView(0,200);
WritableSheet.setColumnView(int i,int width);
//作用是指定第i+1列的宽度,比方:
//将榜首列的宽度设为30
sheet.setColumnView(0,30);
jExcelAPI还有其他的一些功用,比方刺进图像等,这里就不再一一分析,读者能够个人探究。
其间:若是读一个excel,需求晓得它有多少行和多少列,如下操作:
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();