/**
* 导出excel文件
*
* @author K0570071
* @version
* @date 2019/11/25
*/
public class ExcelUtils {
private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
private static final String UTF8 = "UTF-8";
public static void doExport(HttpServletResponse response, HttpServletRequest request) {
File parentFile = new File("file/");// 相对于jar包的路径
File file = parentFile.listFiles()[0];
String filename = file.getName();
logger.info("fileName:{}", filename);
try {
filename = new String(filename.getBytes(UTF8), UTF8);
} catch (UnsupportedEncodingException e1) {
logger.error(e1.getMessage());
}
logger.info("fileName:{}", filename);
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
/*
* Resource resource = new
* ClassPathResource("file/xxx.xlsx"); String filename =
* resource.getFilename(); try (BufferedInputStream bis = new
* BufferedInputStream(resource.getInputStream());
*/
OutputStream out = response.getOutputStream();) {
// 强制下载不打开
response.setContentType("application/force-download");
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("Firefox")) { // 火狐浏览器需要严格按照标准处理
filename = "=?UTF-8?B?" + (Base64Utils.encodeToString(filename.getBytes(UTF8))) + "?=";
// 使用URLEncoder来防止文件名乱码或者读取错误
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
} else {
// 使用URLEncoder来防止文件名乱码或者读取错误
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, UTF8));
}
int b = 0;
byte[] buffer = new byte[1000000];
while (b != -1) {
b = bis.read(buffer);
if (b != -1)
out.write(buffer, 0, b);
}
out.flush();
} catch (IOException e) {
logger.error(e.getMessage());
}
}
}