Java中使用apache poi插件生成excel表格及文件下载
简介
Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,所以我们平时对这些操作比较多,众所周知,在程序中有很多数据,我们有的时候都想对这些数据进行处理,而我们日常办公的时候的excel表格和word中,这样我们展示就比较清楚,这里我们就重点来讲解一下poi插件及其使用的地方
excel的目录结构
准备工作
核心代码
其相关的执行流程就是先生成一个工作空间,然后生成一个sheet目录,然后再生成行和列,其实流程很简单,主要就是其执行的过程中的细节掌握,避免出现空指针和乱码的问题的出现下面我就用代码来展示一下自己的执行的流程
//下载指定的客户信息到指定的文件磁盘上
@RequestMapping("/expro")
public ResponseEntity<byte[]> downAndExcel(@RequestParam("id") List<Integer> ids) throws Exception{
//查询选中的客户的信息
List<Customer> clist = cs.getByIds(ids);
//创建表格对象
HSSFWorkbook wb = new HSSFWorkbook();
//通过表格创建sheet
HSSFSheet sheet = wb.createSheet("客户列表");
//创建表头
HSSFRow header = sheet.createRow(0);
header.createCell(0).setCellValue("客户ID");
header.createCell(1).setCellValue("联系人");
header.createCell(2).setCellValue("公司名");
header.createCell(3).setCellValue("添加时间");
header.createCell(4).setCellValue("联系电话");
//遍历集合,将内容写到excel中
for (int i = 0; i < clist.size(); i++) {
Customer c = clist.get(i);
HSSFRow row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(c.getId());
row.createCell(1).setCellValue(c.getCompanyperson());
row.createCell(2).setCellValue(c.getComname());
row.createCell(3).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(c.getAddtime()));
row.createCell(4).setCellValue(c.getComphone());
}
//将wb的exl中的对象写入到文件对象中
/* File file = new File("E://cus.xls");
FileOutputStream fos = new FileOutputStream(file);*/
ByteArrayOutputStream bos = new ByteArrayOutputStream();
wb.write(bos);
//文件下载
//设置相应头
HttpHeaders headers = new HttpHeaders();
//指定输出的文件的名称
headers.setContentDispositionFormData("attachment","cus.xls");
//设置相应的内容以附件的形式下载
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//FileUtils.readFileToByteArray(file)
return new ResponseEntity<byte[]>(bos.toByteArray(),headers, HttpStatus.OK);
}
运行结果