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

java-下载excel

2016-02-02 17:33 549 查看
在java程序里面处理excel,我觉得比较方便的方式是先做出一个excel的模板(比如定义表头信息、表格名称等),然后根据这个模板往里面填充数据

我这里演示的是使用poi处理2007以上版本的excel表格

代码:

String contextPath = session.getServletContext().getRealPath("/excel"); //获取模板路径
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(contextPath + "/schedule.xlsx")); //获取模板,并装成对应类
XSSFSheet sheet = workbook.getSheetAt(0); //获取第一张表格
int beginRow = 2;
int endRow = 2 + doctorVOs.size();

for(int i = 0;beginRow < endRow; beginRow++,i++){
DoctorCountVO vo = doctorVOs.get(i);
XSSFRow row = sheet.getRow(beginRow);
if(row == null){
row = sheet.createRow(beginRow);
XSSFCell firstCell = row.createCell(0);
firstCell.setCellValue(vo.getDoctorName());

XSSFCell secondCell = row.createCell(1);
secondCell.setCellValue(vo.getOutCallFullDay());

XSSFCell thirdCell = row.createCell(2);
thirdCell.setCellValue(vo.getOutCallHalfDay());

XSSFCell forthCell = row.createCell(3);
forthCell.setCellValue(vo.getAccompanyFullDay());

XSSFCell fifthCell = row.createCell(4);
fifthCell.setCellValue(vo.getAccompanyHalfDay());
}
}
ByteArrayOutputStream  os = new ByteArrayOutputStream();
workbook.write(os);
workbook.close();
return os.toByteArray();


方法最后会放回byte[]数组,controller层通过response放回给客户端

byte[] bytes = scheduleService.userCountExport(contextPath, doctorVOs);
if(bytes != null){
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=schedule.xlsx");
response.setContentLength(bytes.length);
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
response.getOutputStream().close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: