问题:java导出Excel时报错,错误信息 找不到相应的action方法,错误提示是 Velocity加载出错
方法:出现问题后,由于断点不能跟踪到生成Excel的方法内,就直接抛出异常
所以一个一个字段去尝试,虽然很费时间,但毕竟有些收获
总结出现的问题:
(1)调用方法,指定要生成的列标题内容,要与方法内为该列标题插入内容的值相同,否则,会
出现内容与标题对应不上的现象
String[] headNames = {"用户状态"}; JExcelBuyerAudit.exportOrderExcel(output, pageInfo.getResult(), "买家信息列表", headNames);
与
// 用户状态 if(headMap.containsKey("用户状态")){ rowY++; ws.addCell(new Label(rowY,rowX, buyerAuditStatusMap.get(String.valueOf(buyerCompanyInfo.getAuditState())),wcfData)); }
即 Key值要对应,不能有出入
(2)数据转化
即从表中查到的数据要转换为String类型再插入,在转化时出现,空指针、或转化出错
(3)map未进行实例化
从表中读取的数据,某些tinyint类型的数据要根据具体值进行转换。
声明static xxxmap ,一定要实例化, = new HashMap();
public static Map<String,String> homeBusiness ; static{ homeBusiness = new HashMap<String,String>(); homeBusiness.put("0", "No"); homeBusiness.put("1", "Yes"); }
问题总结:
未加try catch 所以异常直接向上抛出,没有定位到异常发生的位置
二、Cannot get a text value from a numeric cell
问题场景:
项目已提供规范的上传文档,可需求方未按照要求进行上传,而是对他们已有的excel文件进行了简单的修改,在文件上传后,提示系统异常
问题分析:
项目开发时由于模板已定,单元格格式是文本类型的,所以未对单元格的格式进行处理
问题解决:
cell.setCellType(Cell.CELL_TYPE_STRING);
将单元格格式转换为文本类型