您的位置:首页 > 其它

Excel文件上传,解析,下载(三 创建文件和文件下载)

2016-03-03 12:44 459 查看
实现文件下载的功能

1.Workbook workBookSpare = spareFlowService.getExcelFile(context, header);获得文件

2.out = response.getOutputStream();获得输出流

3.workBookSpare.write(out);将文件写出到输出流当中

4.设置请求的头部信息

response.setCharacterEncoding("utf-8");

response.setContentType("multipart/form-data");

response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

4.1设置编码格式

4.2设置成文件传输模式

4.3设置下载的附件

5.最后别忘记关闭流

@RequestMapping(params = "method=fileExport")
public void fileExport(@RequestParam("header") String header,
@RequestParam("context") String context,
HttpServletResponse response) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String str = sdf.format(date);
String fileName = str+".xls";
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName="
+ fileName);
Workbook workBookSpare = spareFlowService.getExcelFile(context, header);
OutputStream out = null;
try {
out = response.getOutputStream();
workBookSpare.write(out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
logger.debug(e.getMessage());
} catch (IOException e) {
logger.debug(e.getMessage());
}
}


创建文件,里面使用的是面向接口的编程方式。详情,关注注释即可。

public Workbook createExcelFile(List<ResProperties> resProperties,
List<List<String>> content) {
// 创建显示的头部
Workbook work = new HSSFWorkbook();
Sheet sheet = work.createSheet();
//第一行 表示的是列头
createHeader(resProperties, sheet);
//第二行 对应的列头在数据库当中的ID
createHeaderIdHider(resProperties, sheet);
createContent(content, sheet);
return work;
// 遍历显示的内容
}


private Row createHeader(List<ResProperties> resProperties,Sheet sheet){
Row rowHeaderExcel = sheet.createRow(SpareTransaction.HEADER_EXCEL);
for(int i=0;i<resProperties.size();i++){
//前面空出一列 用来表示ID
Cell cellHeader = rowHeaderExcel.createCell(i+1);
cellHeader.setCellValue(resProperties.get(i).getFieldDescription());
}
return rowHeaderExcel;
}


private Row createHeaderIdHider(List<ResProperties> resProperties,Sheet sheet){
Row rowHeaderExcel = sheet.createRow(SpareTransaction.HIDEER_ID_EXCEL);
//隐藏
rowHeaderExcel.setZeroHeight(true);
for(int i=0;i<resProperties.size();i++){
//前面空出一列 用来表示ID
Cell cellHeader = rowHeaderExcel.createCell(i+1);
cellHeader.setCellValue(resProperties.get(i).getPropertyId());
}
return rowHeaderExcel;
}


private void createContent(List<List<String>> content, Sheet sheet) {
for (int i = 0; i < content.size(); i++) {
List<String> row = content.get(i);
Row rowExcel = sheet
.createRow(i + SpareTransaction.HIDEER_ID_EXCEL+1);
for (int k = 0; k < row.size(); k++) {
Cell cell = rowExcel.createCell(k);
cell.setCellValue(row.get(k));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: