在用JXL写入EXCEL文件时遇到一个比较奇怪的问题。例如每次写入一行之后,紧接着调用WritableWorkbook对象的write()方法,最终写出的EXCEL文件里面没有实际内容,但是文件大小信息正确。最后我将write()方法的调用放在释放WritableWorkbook对象之前调用。能正确写入。期待高手能解释一下原因 :)
public class ExcelWriter {
private WritableWorkbook workBook = null;
private WritableSheet sheet = null;
private Label label = null;
//表行号
private int index = 0;
/**
* 初始化EXCEL写入类
* @param sheetName EXCEL表名
* @param header EXCEL表表头
* @param filePath EXCEL文件路径
*/
public void init(String sheetName, String[] header, String filePath){
try {
index = 0;
workBook = Workbook.createWorkbook(new File(filePath));
sheet = workBook.createSheet(sheetName, 0);
//写入表头
if(header!=null){
for(int i=0; i< header.length; i++){
label = new Label(i, 0, header[i]);
sheet.addCell(label);
}
index++;
}
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
/**
* 写入一行
* @param row 表行
*/
public void write(String[] row){
if(row==null){
return;
}
try {
for(int i=0; i<row.length; i++){
label = new Label(i, index, row[i]);
sheet.addCell(label);
}
index++;
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
/**
* 文件写入及释放
*/
public void release(){
try {
workBook.write();
workBook.close();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}