利用 POI导出Excel文件。
基于poi 3.11
1.控制器层:
@RequestMapping(value = "/down")
@ResponseBody
public void downExcel(HttpServletRequest request,HttpServletResponse response)
throws Exception {
List<ExcelDemo> list = new ArrayList<ExcelDemo>();
try {
list = ExcelDemoService.getExcelDemo();
} catch (Exception e) {
e.printStackTrace();
}
ListInfoUseExcel liu = new ListInfoUseExcel();
HSSFWorkbook workbook = new HSSFWorkbook();
Map<String,Object> map = new HashMap<String,Object>();
request.setAttribute("list", list);
liu.exportExcelDocument(map, workbook, request, response);
}
2.帮助类
public class ListInfoUseExcel{
public void exportExcelDocument(Map<String,Object> model, HSSFWorkbook workbook,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开
response.reset();
response.setContentType("APPLICATION/vnd.ms-excel");
// 注意,如果去掉下面一行代码中的attachment; 那么也会使IE自动打开文件。
response.setHeader("Content-Disposition", "attachment;filename=\""+getFileName()+".xls"+"\"");
// 构造数据
@SuppressWarnings("unchecked")
List<ExcelDemo> list=(List<ExcelDemo>) request.getAttribute("list");
// 设置第一个工作表的名称为name
String name = "ExcelDemo";
HSSFSheet sheet = workbook.createSheet();// 产生工作表对象---------表单
// 设置第一个工作表的名称为name2
workbook.setSheetName(0,name);
// 设置字体
HSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 10); // 字体高度
// font.setColor(HSSFFont.COLOR_RED); //字体颜色
font.setFontName("黑体"); // 字体
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 宽度
// font.setItalic(true); //是否使用斜体
// font.setStrikeout(true); //是否使用划线
// 设置单元格类型样式
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 带边框
cellStyle.setWrapText(true);
cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);// 行底色
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFCellStyle cellStyle2 = workbook.createCellStyle();
cellStyle2.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 水平布局:居左
cellStyle2.setWrapText(true);
// 产生一行
HSSFRow header = sheet.createRow((short) 0);
// 产生标题列
header.createCell(0).setCellValue("时间");
header.createCell(1).setCellValue("渠道号");
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));
// 填充数据
int rowNum = 1;
for(int i=0;i<list.size();i++){
ExcelDemo ed=list.get(i);
HSSFRow row = sheet.createRow(rowNum++);
row.createCell(0).setCellValue(ed.getDt());
row.createCell(1).setCellValue(ed.getQid());
}
OutputStream os = response.getOutputStream();
workbook.write(os);
os.flush();
os.close();
}
}