上传文件解析常JSON格式代码

weixin_40870768 2017-10-31 03:39:35
public class ExcelJsonUtil {
private static final Logger logger = LoggerFactory.getLogger(ExcelJsonUtil.class);

/**
* 获取表头行
* @param sheet
* @param index sheet 页
* @return
*/
private Row getHeaderRow(Sheet sheet, int index){
Row headerRow = null;
if(sheet!=null){
headerRow = sheet.getRow(index);
}
return headerRow;
}

/**
* 获取表格中单元格的value
* @param row
* @param cellIndex sheet页0开始
* @param formula
* @return
*/
private Object getCellValue(Row row,int cellIndex,FormulaEvaluator formula){
Cell cell = row.getCell(cellIndex);
if(cell != null){
switch (cell.getCellType()) {
//String类型
case Cell.CELL_TYPE_STRING:
return cell.getRichStringCellValue().getString();
//number类型
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().getTime();
} else {
return cell.getNumericCellValue();
}
//boolean类型
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
//公式
case Cell.CELL_TYPE_FORMULA:
return formula.evaluate(cell).getNumberValue();
default:
return null;
}
}
return null;
}

/**
* 获取表头value
* @param headerRow
* @param cellIndex 英文表头所在的行,从0开始计算哦
* @return
*/
private String getHeaderCellValue(Row headerRow,int cellIndex){
Cell cell = headerRow.getCell(cellIndex);
String headerValue = null;
if(cell != null){
headerValue = cell.getRichStringCellValue().getString();
}
return headerValue;
}


/**
* 读取excel表格
* @param file 文件
* @param headerIndex excel sheet页
* @return
*/
public JSONArray readExcle(InputStream is, int headerIndex){
List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
try {
//加载excel表格
WorkbookFactory wbFactory = new WorkbookFactory();
Workbook wb = wbFactory.create(is);
//读取第一个sheet页
Sheet sheet = wb.getSheetAt(0);
//读取表头行
Row headerRow = getHeaderRow(sheet, headerIndex);
//读取数据
FormulaEvaluator formula = wb.getCreationHelper().createFormulaEvaluator();

System.out.println(sheet.getLastRowNum());;

for(int r = headerIndex+1; r<= sheet.getLastRowNum();r++){
Row dataRow = sheet.getRow(r);
Map<String, Object> map = new HashMap<String, Object>();
for(int h = 0; h<dataRow.getLastCellNum();h++){
//表头为key
String key = getHeaderCellValue(headerRow,h);
//数据为value
Object value = getCellValue(dataRow, h, formula);
if(!key.equals("") && !key.equals("null") && key != null ){
map.put(key, value);
}
}
lists.add(map);
}

} catch (Exception e) {
e.printStackTrace();
}
JSONArray jsonArray = JSONArray.fromObject(lists);
return jsonArray;
}

}
...全文
127 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧