jxl操作Excle时发生错误(莫名其妙的空指针异常)
qsvhj 2007-11-21 06:48:50 代码如下:
代码如下:
public abstract class CreateExcelSheet {
private String filePath;
protected WritableWorkbook wwb ;
public CreateExcelSheet(String filePath){
try {
System.out.println("filePath=="+filePath);
//Excel获得文件
Workbook wb = Workbook.getWorkbook( new File(filePath));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook wwb = Workbook.createWorkbook( new File(filePath),
wb);
System.out.println("wwb==="+wwb);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void close(){
if(wwb!=null){
try {
wwb.write();
wwb.close(); // 关闭文件
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public abstract void createSheet();
}
public class CreateProductPriceTableXls extends CreateExcelSheet{
private String year ;
private String sheetName;
private int index;
private String filePath;
public CreateProductPriceTableXls(String filePath){
super(filePath);
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public void createSheet() {
try{
// //Excel获得文件
// Workbook wb = Workbook.getWorkbook( new File("c://2.xls"));
// // 打开一个文件的副本,并且指定数据写回到原文件
// WritableWorkbook wwb = Workbook.createWorkbook( new File("c://2.xls"),
// wb);
Label label ;
System.out.println("aaaaaaaaaaaa");
System.out.println("sheetName=="+sheetName);
System.out.println("index==="+index);
WritableSheet sheet = wwb.createSheet(sheetName, index);
System.out.println("aabba");
sheet.mergeCells(0,0,5,0);
label = new Label(0,0,year+"ResourceOne 产品报价明细表(万元)");
sheet.addCell(label);
sheet.mergeCells(0, 1, 1, 1);
label = new Label(0,1,"产品名称");
sheet.addCell(label);
label = new Label(1,1,"组件名称");
sheet.addCell(label);
label = new Label(2,1,"单位");
sheet.addCell(label);
// wwb.write();
// wwb.close();
}catch(Exception e){
e.printStackTrace();
}finally{
close();
}
}
public String getSheetName() {
return sheetName;
}
public void setSheetName(String sheetName) {
this.sheetName = sheetName;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
public class test {
public static void main(String[] args){
String filePath = "c://test6.xls";
// Util.createExcelFile(filePath);
CreateProductPriceTableXls cppt = new CreateProductPriceTableXls(filePath);
cppt.setIndex(0);
cppt.setSheetName("产品明细表");
cppt.setYear("2007");
cppt.createSheet();
}
用继承关系的来做的话执行test 类时 在createSheet类中WritableSheet sheet = wwb.createSheet(sheetName, index);
报空指针异常。下面是控制台输出
filePath==c://test6.xls
wwb===jxl.write.biff.WritableWorkbookImpl@148cc8c
java.lang.NullPointerException
at com.icss.product.resourceone.service.total.xls.CreateProductPriceTableXls.createSheet(CreateProductPriceTableXls.java:68)
at com.icss.product.resourceone.service.total.test.test.main(test.java:56)
aaaaaaaaaaaa
sheetName==产品明细表
index===0
想了半天也看不出来什么原因。
如果不用继承关系来做 用createSheet类中已经注释的代码来做 就没问题。
希望有朋友能简答下 非常感谢!!!