#Java导出为excle文件
controler
@GetMapping("/exportExcel")
public void exportExcel(HttpServletResponse response){
deviceWarningService.exportExcel(response);
}
service
@Override
public void exportExcel( HttpServletResponse response) {
List<Map<String, Object>> mapList = deviceWarningMapper.findExcle();
ExcelUtil.exportToExcel(mapList,"阈值管理","sheet1",response);
}
工具类方法
public static void exportToExcel(List<Map<String, Object>> data, String fileName, String sheetName, HttpServletResponse response) {
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet(sheetName);
// 创建表头
Row headerRow = sheet.createRow(0);
Set<String> columns = data.get(0).keySet(); // 假设第一行为表头
int columnIndex = 0;
for (String column : columns) {
Cell cell = headerRow.createCell(columnIndex++);
cell.setCellValue(column);
}
// 填充数据
int rowIndex = 1;
for (Map<String, Object> rowMap : data) {
Row row = sheet.createRow(rowIndex++);
int cellIndex = 0;
for (Object value : rowMap.values()) {
Cell cell = row.createCell(cellIndex++);
if (value != null) {
if (value instanceof String) {
cell.setCellValue((String) value);
} else if (value instanceof Integer) {
cell.setCellValue((Integer) value);
} else if (value instanceof Double) {
cell.setCellValue((Double) value);
} else if (value instanceof Boolean) {
cell.setCellValue((Boolean) value);
} else {
cell.setCellValue(value.toString());
}
}
}
}
// 设置响应头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
// 将工作簿写入响应流
try (ServletOutputStream outputStream = response.getOutputStream()) {
workbook.write(outputStream);
}
} catch (IOException e) {
e.printStackTrace();
}
}
mapper返回的是map类型