import java.io.*;
import jxl.*;
import jxl.write.*;
public class ControlExcel {
public void creatExcel(){
try {
//新建了一个文件,保存在默认根目录了
WritableWorkbook book = Workbook.createWorkbook(new File(
"wenben.xls"));
//创建两个sheet
WritableSheet sheet = book.createSheet("page1",0);
WritableSheet sheet2 = book.createSheet("page2",0);
Label label = new Label(0, 0, "test");
sheet.addCell(label);
sheet.addCell(new Label(0,1,"AA"));
sheet.addCell(new Label(1,1,"VV"));
sheet.addCell(new Label(1,2,"vv"));
sheet.addCell(new Label(2,1,"CC"));
sheet.addCell(new Label(3,1,"asd"));
sheet.addCell(new Label(4,1,"asd"));
sheet.addCell(new Label(5,1,"asd"));
sheet2.addCell(new Label(0,1,"null"));
sheet2.addCell(new Label(0,2,"add"));
sheet2.addCell(new Label(1,1,"niyou"));
jxl.write.Number number = new jxl.write.Number(1, 0, 789.123);
//说明,添加数字记录,使用Number是规范的
sheet.addCell(number);
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
public String readExcel(fileName) {
String xx = "";
//没有使用xx,暂时没有使用该方法
try {
Workbook book = Workbook.getWorkbook(new File("fileName"));
// 获得第一个工作表对象
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);
}
return xx;
}
public String updatexls(fileName) {
//xx暂时没有使用
String xx="";
try {
// excel获得文件
Workbook wb = Workbook.getWorkbook(new File("fileName"));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(
new File("test.xls"), wb);
// 添加一个工作表
WritableSheet sheet = book.createSheet("page2", 1);
sheet.addCell(new Label(0, 0, "page2data"));
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
return xx;
}
}
以上这个类目前提供excel的创建,读取和修改需要完善其方法,
至于更高级的一些方法,我将方法列于下面:
一、 数据格式化
在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);