excel导出
@ResponseBody
@RequestMapping(value = {"/test/export"})
public void testExport(HttpServletRequest request, HttpServletResponse response
) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("export");
HSSFRow row = sheet.createRow(0);
sheet.createFreezePane(0, 1);
String[] colNames = new String[]{"姓名", "性别", "年龄"};
setFirstClo(wb, row, colNames);
List<Map> list = new ArrayList<Map>();
Map map = new HashMap();
map.put("name", "aaa");
map.put("sex", "男");
map.put("age", "30");
list.add(map);
Map map1 = new HashMap();
map1.put("name", "bbb");
map1.put("sex", "男");
map1.put("age", "30");
list.add(map1);
if (null != list && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Map tempMap = list.get(i);
Object[] values = {map.get("name"), map.get("sex"), map.get("age")};
HSSFRow rowIn = sheet.createRow(i + 1);
setDataClo(wb, rowIn, values);
}
}
String fileName = new String("测试.xls".getBytes("gbk"), "iso8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setContentType("application/ms-excel");
wb.write(response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
/**
* 设置excel第一行数据(列名)
*
* @param wb
* @param row
* @param colNames
*/
public static void setFirstClo(HSSFWorkbook wb, HSSFRow row, String[] colNames) {
for (int i = 0; i < colNames.length; i++) {
createCell(wb, row, i, colNames[i]);
}
}
/**
* 设置excel数据
*
* @param wb
* @param row
* @param colValues
*/
public static void setDataClo(HSSFWorkbook wb, HSSFRow row, Object[] colValues) {
for (int i = 0; i < colValues.length; i++) {
createCell(wb, row, i, String.valueOf(colValues[i]));
}
}
/**
* 创建一行
*
* @param wb
* @param row
* @param col
* @param val
*/
private static void createCell(HSSFWorkbook wb, HSSFRow row, int col, String val) {
HSSFCell cell = row.createCell(col);
val = val.replaceAll("'", "'");
val = val.replaceAll("(", "\\(").replaceAll(")", "\\)");
val = val.replaceAll("<", "<").replaceAll(">", ">");
cell.setCellValue(val);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
cell.setCellStyle(cellStyle);
}