背景:
需要使用EasyExcel对各种不同文件内容的Excel文件进行读取,所以使用的Map在回调中进行接收数据
public void invoke(Map<Integer, Object> dataMap, AnalysisContext context) {
//如果配置了结束行号且结束行号小于总行号时直接返回
if(endRow != -1 && totalRow > endRow){
return;
}
Map<String, Object> originalData = new HashMap<String, Object>();
Set keySet = dataMap.keySet();
for(Integer key : keySet){
if(MapUtil.isEmpty(headMap)){
originalData.put("s"+key.intValue(), dataMap.get(key));
}else{
originalData.put(DBUtil.getString(headMap.get("s"+key.intValue())), dataMap.get(key));
}
}
//每列数据处理完以后,要判断下如果是按sheet页名称进行读取的,要把sheet页名称放到map里
if(StringUtil.isNotEmpty(sheetName)){
originalData.put("sheetname", sheetName);
}
// originalData.put("rownumber", headRow);
int rownumber = 0;
if(originalData.containsKey("rownumber")){
rownumber = DBUtil.getInt(originalData.get("rownumber"));
}
rownumber++;
originalData.put("rownumber", rownumber);
totalRow++;
datas.add(originalData);
}
监听的定义:
StringExcelListener listener = new StringExcelListener(headMap,impConfig,headRow,endRow);
sheet读取:
readSheet = EasyExcel.readSheet(readSheet.getSheetName()).headRowNumber(tmpHeadRow).registerReadListener(listener).build();
excelReader.read(readSheet);
在读取Excel中特殊单元格格式的数据时出现问题,单元格值为-37,111,408.00,单元格格式设置为货币,但通过invoke回调方法取出的map对象里该单元格的值为(37,111,408.00)导致后续处理出现问题,对应的easyExcel版本为2.2.11,请问是否有对应解决方案?