java中使用apache POI导出excel案例(提供下载)
来源:互联网 发布:怎么打造淘宝爆款 编辑:程序博客网 时间:2024/06/05 05:48
前端代码
<script type="text/javascript">
window.location = '${servePath}/pc/wuye/doExportExcel?type=0';
</script>
特别注意一下这不能使用ajax进行传参数和跳转页面,因为ajax不提供下载。
后台代码
// 在内存中创建一个Excel文件,通过输出流写到客户端提供下载
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个sheet页
HSSFSheet sheet = workbook.createSheet("物业投诉");
// 创建标题行
HSSFRow headRow = sheet.createRow(0);
headRow.createCell(0).setCellValue("投诉类型");
headRow.createCell(1).setCellValue("投诉内容");
headRow.createCell(2).setCellValue("创建时间");
headRow.createCell(3).setCellValue("创建人");
headRow.createCell(4).setCellValue("更新时间");
headRow.createCell(5).setCellValue("更新人");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (logistics_complaintsAO complaintsA : orderResult) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
dataRow.createCell(0).setCellValue(complaintsA.getSecondary_classification());
dataRow.createCell(1).setCellValue(complaintsA.getContent());
dataRow.createCell(2).setCellValue(df.format(complaintsA.getCreate_time()));
dataRow.createCell(3).setCellValue(complaintsA.getCreate_by());
dataRow.createCell(4).setCellValue(df.format(complaintsA.getUpdate_time()));
dataRow.createCell(4).setCellValue(complaintsA.getUpdate_by());
}
String filename = "物业投诉.xls";
String agent = request.getHeader("User-Agent");
filename = FileUtils.encodeDownloadFilename(filename, agent);
//一个流两个头
ServletOutputStream out = response.getOutputStream();
String contentType = response.getContentType();
response.setContentType(contentType);
response.setHeader("content-disposition", "attchment;filename="+filename);
workbook.write(out);
其中使用到一个工具类
public class FileUtils {
/**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @param filename
* 下载文件名
* @param agent
* 客户端浏览器
* @return 编码后的下载附件名
* @throws IOException
*/
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
return filename;
}
}
此处还需要一个根据浏览器设计文件名的工具类,工具类如下
package com.yuanxin.app.csgdatamonitor.util;
import java.io.IOException;
import java.net.URLEncoder;
import sun.misc.BASE64Encoder;
public class FileUtils {
/**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @param filename
* 下载文件名
* @param agent
* 客户端浏览器
* @return 编码后的下载附件名
* @throws IOException
*/
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
//String name = java.net.URLEncoder.encode(filename, "UTF8");
filename = filename.replace("+"," ");
}
return filename;
}
}
- java中使用apache POI导出excel案例(提供下载)
- java中使用poi导出Excel详解
- java中使用poi导出Excel详解
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用poi导入、导出Excel
- Java中使用Apache POI实现数据的Excel导入和导出
- Java web 导出Excel (使用POI)
- java中poi导出excel
- Java使用POI导出Excel
- 使用apache poi进行excel导出
- 使用apache poi包导出excel
- 使用Apache的poi导出Excel
- 使用Apache POI中的XSSF导出Excel
- RecyclerView的简单使用--------------(一)
- Odd Even Linked List
- LeetCode-342. Power of Four
- MySQL修改列
- 面试问题java Object类有哪些方法
- java中使用apache POI导出excel案例(提供下载)
- 计算机网络常见面试题
- java实现杨辉三角
- 关于自定义风格的各种属性
- CenOs7(1611)安装配置中遇到的问题(虚拟网卡、IP 、DNS、主机名)
- js使用误区
- cadence中的焊盘和flash symbol
- React Native经常用的命令
- ES6__异步开发优化