//==============================================核心类===============================================================
public static ByteArrayInputStream genExcel(Map<String,Object> excelMap)
throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("sheet1");
List<String> header = (List<String>)excelMap.get("header");
List<List<Object>> contents = (List<List<Object>>)excelMap.get("contents");
int ri = 0, ci = 0;
HSSFRow row = sheet.createRow(ri);
HSSFCell cell = null;
//列名字体加粗
HSSFCellStyle cellStyle = workbook.createCellStyle();
HSSFFont cellFont = workbook.createFont();
cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cellStyle.setFont(cellFont);
if (header != null && contents != null) {
//生成列名
for (ci = 0; ci < header.size(); ci++) {
cell = row.createCell(ci);
cell.setCellValue(header.get(ci));
cell.setCellStyle(cellStyle);
}
//行数据生成
for (ri = 0; ri < contents.size(); ri++) {
row = sheet.createRow(ri + 1);
List<Object> data = contents.get(ri);
for (ci = 0; ci < data.size(); ci++) {
cell = row.createCell(ci);
Object value = data.get(ci);
if(value != null){
if (value instanceof Long || value instanceof Integer ||
value instanceof Short || value instanceof Byte ||
value instanceof AtomicInteger ||
value instanceof AtomicLong ||
value instanceof BigInteger ||
value instanceof BigDecimal ||
value instanceof Float ||
value instanceof Double) {
cell.setCellValue(((Number) value).doubleValue());
}else if(value instanceof Boolean){
cell.setCellValue((Boolean) value);
}else if(value instanceof byte[]){
cell.setCellValue(DataFormat.bytes2HexString((byte[])value));
}else{
cell.setCellValue(String.valueOf(value));
}
}
}
}
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.flush();
workbook.write(baos);
byte[] ba = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(ba);
return bais;
}
}