您的位置:首页 > 编程语言 > Java开发

Excel导出

2016-04-21 10:35 609 查看
所有的导出导入,都是输入输出流,一个读一个写.本文介绍一种导出Excel的方法,凡是你查询出来的数据都可以按自定义顺序导出:

控制层(controlle)代码如下:

@RequestMapping(params = "excelTemplate")
@ResponseBody
public AjaxJson excelTemplate(HttpServletRequest request, HttpServletResponse response) {
AjaxJson j = new AjaxJson();
String beginTime = request.getParameter("beginTime");
String endTime = request.getParameter("endTime");
String num = request.getParameter("num");
//前面三个参数是jsp传过来的,分别是开始时间,结束时间,和最新多少条数据
try {
String s = request.getSession().getServletContext().getRealPath("/");
String path = s + "export/template/finance.xls"; // 这个是我的excel模板
InputStream in = new FileInputStream(new File(path));
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd"); // 为了转时间,看你需不需要按时间查询的结果导出
HSSFWorkbook work = new HSSFWorkbook(in);
// 得到excel的第0张表
HSSFSheet sheet = work.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell(2);
int i = 2;// 计数器
List<Map<String, Object>> list = this.memberFinanceService.selectInfo(beginTime, endTime, num);
// 创建每个单元格,添加样式,最后合并
work.getSheetAt(0).shiftRows(3, 3, list.size() - 1); // 把第三行移动到列表的长度-1的地方
// 这个地方我是要把模板的第四行放到最后一行

for (Map map : list) {
row = sheet.createRow(i);
cell = row.createCell(0);// 得到第0个单元格
if (!(map.get("companyName") == null)) {
cell.setCellValue(map.get("companyName").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(1);
if (!(map.get("memberName") == null)) {
cell.setCellValue(map.get("memberName").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(2);
if (!(map.get("integral") == null)) {
cell.setCellValue(map.get("integral").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(3);
if (!(map.get("equity_coupon") == null)) {
cell.setCellValue(map.get("equity_coupon").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(4);
if (!(map.get("equity_income") == null)) {
cell.setCellValue(map.get("equity_income").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(5);
if (!(map.get("directRewards") == null)) {
cell.setCellValue(map.get("directRewards").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(6);
if (!(map.get("indirectRewards") == null)) {
cell.setCellValue(map.get("indirectRewards").toString());
} else {
cell.setCellValue("");
}

4000
cell = row.createCell(7);
if (!(map.get("balance") == null)) {
cell.setCellValue(map.get("balance").toString());
} else {
cell.setCellValue("");
}
cell = row.createCell(8);
if (!(map.get("extractable") == null)) {
cell.setCellValue(map.get("extractable").toString());
} else {
cell.setCellValue("");
}
i++;
}
HSSFRow row1 = sheet.getRow(list.size() + 2);
System.out.println(row1);
HSSFCell cell1 = row1.getCell(0);
String address = simpleFormat.format(new Date());
OutputStream os = response.getOutputStream();// 取得输出流
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=finance(" + address + ").xls");
work.write(os);
os.close();
} catch (FileNotFoundException e) {
System.out.println("文件路径错误");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件输入流错误");
e.printStackTrace();
}
request.setAttribute("num", num);
j.setMsg("导出Excel成功");
return j;
}


这种导出方法比较灵活和简单, 你只需要查出自己想导出的数据就可以导出了!(不清楚的可以留言问我)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  导出Excel java