前天,朋友问了我一个问题,jxl导出Excel为什么内容为空,刚开始觉得没有那么难得,结果花了一早上也没解决,第二天知道真相的我,眼泪掉下来。
现在写下代码吧,看看大家能不能找到
/* 报表导出
* @param os
*/
public void VecWriteExcel(OutputStream os) {
try {
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
jxl.write.WritableSheet ws = wwb.createSheet("XXXX年汇总表", 0);
WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.NO_BOLD, false);
WritableCellFormat wcf = new WritableCellFormat(wf);// 实例化文字格式化
wcf.setAlignment(jxl.format.Alignment.CENTRE);// 左右居中
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 上下居中
wcf.setBorder(Border.ALL, BorderLineStyle.THIN); // 设置边框
wcf.setWrap(true); // 是否换行;
ws.addCell(this.setLabelData(1, 1, "XXX", wcf));
ws.addCell(this.setLabelData(1, 2, "CCC", wcf));
ws.addCell(this.setLabelData(1, 3, "VVV", wcf));
ws.setColumnView(0, 20); // 设置列的宽度
ws.setColumnView(1, 20); // 设置列的宽度
ws.setColumnView(2, 20); // 设置列的宽度
int i = 0;
RowSet rs = this.getOtherV("TGBASE").getTable("xml.zccaseinfo.getVecTreeTimeCase").toR().toRowSet();
while (rs.next()) {
ws.setRowView(i + 1, 200, false);// 设置行的高度
String BRANUM = rs.getString("BRANUM");
String TRANO = rs.getString("TRANO");
String PSNNAME = rs.getString("PSNNAME");
ws.addCell(this.setLabelData(i + 2, 1, BRANUM, wcf));
ws.addCell(this.setLabelData(i + 2, 2, TRANO, wcf));
ws.addCell(this.setLabelData(i + 2, 3, PSNNAME, wcf));
i++;
}
// 写入Excel工作表
wwb.write();
// 关闭Excel工作薄对象
wwb.close();
} catch (Exception e) {
}
}
大家有发现什么吗
断点测试一直有数值,但是吧,始终没有数据显示在表格里,我和朋友一直以为是编码问题,我原先也觉得不是,但是把后来成功让她带到坑里了。在百度途中,又意识到会不会是那个原因,但是把转脸就忘记了。现在让我来告诉大家为什么吧,因为流忘记关了,所以如果你使用流的时候,记得关闭。这是很重要的不然会有很多的BUG出现!!!