最近在做一个小项目,因为要把数据保存到Excel,所以采用了比较简单易用的jxl进行Excel的操作
代码如下:
public class AppendExcelTask implements IThreadTask {
private final static String[] headers = {"申请编号", "宝宝姓名", "宝宝生日", "宝宝性别", "宝宝年龄","家长姓名","手机号码","填表时间","洽谈地址","填表人"};
private final static int [] lengths = {35,10,20,10,15,10,20,20,35,10};
Apply apply;
String filePath;
String fileName;
public AppendExcelTask(Apply apply, String filePath,String fileName){
this.apply=apply;
this.filePath=filePath;
this.fileName=fileName;
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
// TODO implement AppendExcelTask.run
//System.out.println(apply.toString());
WritableCellFormat headerFormat = new WritableCellFormat();
WritableWorkbook workbook = null;
//创建空白Excel文件,如果文件已经存在,为了避免覆盖已有文件引起的麻烦,直接返回
File file = new File(filePath+fileName);
if (file.exists()) {
try {
Workbook book = Workbook.getWorkbook(file);
workbook = Workbook.createWorkbook(file, book);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
} else {
try {
file.createNewFile();
workbook = Workbook.createWorkbook(file);
} catch (Exception e) {
e.printStackTrace();
}
}
try {
headerFormat.setAlignment(Alignment.CENTRE);
WritableSheet sheet = null;
int sheets = workbook.getSheets().length;
if (sheets == 0) {
sheet = workbook.createSheet("第1页", 0);
for (int i = 0; i < headers.length; i++) {
Label label = new Label(i, 0 , headers[i],headerFormat);
sheet.addCell(label);
sheet.setColumnView(i, lengths[i]);
}
} else {
//如果最后一页表格的行数大于65535,就新建一页表格
if(workbook.getSheet(sheets-1).getRows()==65535){
sheet = workbook.createSheet("第"+(sheets+1)+"页", sheets-1);
for (int j = 0; j < headers.length; j++) {
Label label = new Label(j, 0 , headers[j],headerFormat);
sheet.addCell(label);
sheet.setColumnView(j, lengths[j]);//设置单元格宽度
}
}else{
sheet = workbook.getSheet(sheets-1);
}
}
CellView cellView = new CellView();
cellView.setAutosize(true); //设置自动大小
cellView.setSize(10);
//为每一列设值
int c = sheet.getRows();
sheet.addCell(new Label(0, c, apply.getApplyCode()));
sheet.addCell(new Label(1, c, apply.getBabyName()));
sheet.addCell(new Label(2, c, apply.getBirthDay()));
sheet.addCell(new Label(3, c, apply.getSex()));
sheet.addCell(new Label(4, c, apply.getAge()));
sheet.addCell(new Label(5, c, apply.getParentName()));
sheet.addCell(new Label(6, c, apply.getPhone()));
sheet.addCell(new Label(7, c, apply.getFormTime()));
sheet.addCell(new Label(8, c, apply.getAddress()));
sheet.addCell(new Label(9, c, apply.getFromUser()));
workbook.write();
} catch (Exception e) {
// TODO: handle exception
} finally {
try {
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}