// 创建输出流
OutputStream out = null; // 输出流
Workbook wb = null;
try {
out = response.getOutputStream();
wb = new XSSFWorkbook(); // 创建工作簿
Sheet sheet1 = wb.createSheet("sheet1");// 创建sheet
Row rowExcel = sheet1.createRow(0);// 创建第一行
CellStyle styleHead = wb.createCellStyle(); // 创建表头样式
styleHead.setAlignment(CellStyle.ALIGN_CENTER);// 创建一个居中格式
XSSFFont font = (XSSFFont) wb.createFont(); //字体
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示
styleHead.setFont(font);
//设置表头背景色
styleHead.setFillPattern(CellStyle.SOLID_FOREGROUND);
styleHead.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
CellStyle styleBody = wb.createCellStyle(); // 创建内容样式
styleBody.setAlignment(CellStyle.ALIGN_CENTER);// 创建一个居中格式
// 生成表头字段
List<String> rowHeadExcel = tableHead(targetTypeCH, data);
Cell cell = null;
for (int i = 0; i < rowHeadExcel.size(); i++) {
cell = rowExcel.createCell(i);
cell.setCellValue(rowHeadExcel.get(i));// 设置单元格内容
cell.setCellStyle(styleHead);
}
// 获得要写入的数据
List<Map<String, Object>> excelDataList = tableContentColumn(rowHeadExcel, data);
// 写入实体数据
if (!CollectionUtils.isEmpty(excelDataList)) {
for (int i = 0; i < excelDataList.size(); i++) {// 根据i创建行
rowExcel = sheet1.createRow(i + 1);// 创建行
Map<String, Object> excelMap = excelDataList.get(i);// 获取对应行的MAP集合
for (int j = 0; j < rowHeadExcel.size(); j++) {// 设置每行单元格内容
cell = rowExcel.createCell(j);
String excelColumn = rowHeadExcel.get(j);
String excelVal = (String) excelMap.get(excelColumn);
cell.setCellValue(excelVal);// 设置单元格内容
cell.setCellStyle(styleBody);
}
}
}
//设置列宽自适应(对中文不管用)
// sheet1.autoSizeColumn(0,true); “列名”.getBytes().length*2*256
// sheet1.autoSizeColumn(1,true);
// sheet1.autoSizeColumn(2,true);
// sheet1.autoSizeColumn(3,true);
//设置列宽
for (int i = 0; i < rowHeadExcel.size(); i++) {
if(i==0){
sheet1.setColumnWidth(i, rowHeadExcel.get(i).getBytes().length*2*256 );
}else{
sheet1.setColumnWidth(i, rowHeadExcel.get(i).getBytes().length*1*280 );
}
}
// 将数据存入输出流中
wb.write(out);
data.setReturnCode("0");
out.flush();