try {
String localPath = ServletActionContext.getServletContext().getRealPath("/");
String lastChar = localPath.substring(localPath.length() - 1);
File file = null;
if (lastChar.equals(File.separator)) {
file = new File(localPath + "exportTemplate" + File.separator + exportFileName+".xls");
} else {
file = new File(localPath + File.separator + "exportTemplate" + File.separator + exportFileName+".xls");
}
if (!file.exists()) {
throw new Exception("template file not found!");
}
// 生成EXCEL数据
InputStream input = new FileInputStream(file);
// 注:当XSSFWorkbook解析失败后HSSFWorkbook再次解析,需要重新创建一个inputStream,否则会报java.io.IOException:Read error
InputStream input2 = new FileInputStream(file);
Workbook book = null;
try {
book = new XSSFWorkbook(input);
} catch (Exception ex) {
try {
book = new HSSFWorkbook(input2);
} catch (Exception exx) {
throw new ServiceException("不兼容的Excel数据格式!");
}
} finally {
try {
if (input != null){
input.close();
}
if (input2 != null) {
input2.close();
}
} catch (Exception ex) {
}
}
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(exportFileName + ".xls", "UTF-8"));
//定义输出类型
response.setContentType("application/octet-stream");
OutputStream os = response.getOutputStream();
book.write(os);
os.close();
os.flush();
} catch(Exception e) {
e.printStackTrace();
}
POI下载Excel模板解决不兼容问题
最新推荐文章于 2023-08-14 15:30:33 发布