package com.kjlink.test;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class ExeclTest {
//测试方法
public static void main(String[] args) {
//保存在工程目录下
// writeExcel("aaa.xls");
//保存在D盘目录下
// writeExcel("d:\\aaa.xls");
readExcel(new File("aaa.xls"));
}
//创建一个Excel表格
public static void writeExcel(String fileName){
//创建一个可写的工作薄
WritableWorkbook wwb = null;
try{
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch(IOException e) {
e.printStackTrace();
}
//判断工作薄是否为空
if(wwb != null) {
//创建一个可写的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("工作表名称", 1);
//下面开始添加单元格
for(int i=0;i<10;i++) {
for(int j=0;j<5;j++) {
//创建一个单元格
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label label = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try{
//将单元格添加到工作表中
ws.addCell(label);
} catch(RowsExceededException e) {
e.printStackTrace();
} catch(WriteException e) {
e.printStackTrace();
}
}
}
try {
//将工作表写入工作薄中,不能写在for循环里,否则会报java.lang.NullPointerException异常
wwb.write();
System.out.println("Excel创建成功");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭工作薄,释放资源
wwb.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//读取Excel表格的内容
public static void readExcel(File file) {
//用来接受读取到的字符串
StringBuffer sb = new StringBuffer();
//定义一个工作薄
Workbook wwb = null;
try{
//获取目标Excel表格
wwb = Workbook.getWorkbook(file);
} catch(BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Excel表格中的所有工作表
Sheet[] sheets = wwb.getSheets();
if(sheets!=null&&sheets.length>0) {
for(int i=0;i<sheets.length;i++) {
//工作表中的所有行
int rowNum = sheets[i].getRows();
if(rowNum>0) {
for(int j=0;j<rowNum;j++) {
//每一行中的所有单元格
Cell[] cells = sheets[i].getRow(j);
if(cells!=null&&cells.length>0) {
for(int k=0;k<cells.length;k++) {
//将单元格中的内容拼接到sb中
sb.append(cells[k].getContents());
sb.append("\n");
}
}
}
}
}
}
System.out.println(sb.toString());
wwb.close();
}
}