JAVA 用POI实现Excel的导出 小案例 (100%可用)
public void exportExcel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("table"); //创建table工作薄
String fileName = "xxxx.xls";
String id= request.getParameter("id");
DataList model = this.findByPrimaryKey(id);
HSSFCell cell;
// 创建标题行
HSSFRow row0 = sheet.createRow(0);
row0.createCell(0).setCellValue("xxx");
row0.createCell(1).setCellValue("xxx");
row0.createCell(2).setCellValue("时间");
row0.createCell(3).setCellValue("xxx");
// 创建内容行
for (int i = 1; i < model.getList().size() + 1; i ++ ) {
HSSFRow row = sheet.createRow(i);
XXX xxx = model.getList().get(i - 1);
row.createCell(0).setCellValue(xxx.getxxx());
row.createCell(1).setCellValue(xxx.getxxx());
row.createCell(2).setCellValue(formatDate(list));
row.createCell(3).setCellValue(xxx.getxxx());
}
// 解决文件乱码
fileName = getBrowser(request, fileName);
// 下载文件
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename="+fileName);
response.flushBuffer();
wb.write(response.getOutputStream());
}
/**
* 日期格式转化
*/
private String formatDate(List list) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(list.getTime());
}
private String getBrowser (HttpServletRequest request, String fileName) throws UnsupportedEncodingException {
//获取浏览器名(IE/Chrome/firefox)
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("Firefox")) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} else if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else if (userAgent.contains("Chrome")) {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
}
return fileName;
}