struts2+poi导出Excel,没有弹出导出下载的问题

王者_来归 2014-10-06 11:26:04
各位好,如题,以下是代码
action

public String exportEXCEL() {
ByteArrayOutputStream outStream = null;
String resData = null;
try {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = null;
String timeFlag = "";
TimeUtil timeUtil = new TimeUtil();
timeFlag = timeUtil.gettimesStringYYYYMMDD();
exportFileName = this.title + timeFlag +".xls";//title是前台传入的
exportFileName = new String(exportFileName.getBytes(),"utf-8");
outStream = new ByteArrayOutputStream();

sheet = workbook.createSheet(this.title);


//表标题样式
HSSFCellStyle titylStyle = workbook.createCellStyle();
titylStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
titylStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
titylStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
titylStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
titylStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
titylStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
titylStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

//列标题字体样式
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short) 16);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 把字体应用到当前的样式
titylStyle.setFont(font);


//其它列表样式
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

//生成字体
HSSFFont font2 = workbook.createFont();
font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);

//把字体应用到当前的样式
cellStyle.setFont(font2);


HSSFRow titleRow = sheet.createRow(0);
HSSFCell titleCell = titleRow.createCell(0);
titleCell.setCellValue("标题");
HSSFCell titleCell1 = titleRow.createCell(1);
titleCell1.setCellValue("姓名");
HSSFRow row = sheet.createRow(1);
HSSFCell cell = row.createCell(0);
cell.setCellValue("测试");
HSSFCell cell1 = row.createCell(1);
cell1.setCellValue("张三");

workbook.write(outStream);
outStream.flush();
byte[] bb = outStream.toByteArray();
this.exportFile = new ByteArrayInputStream(bb);
resData = "excel";
this.logger.info("生成EXCEL成功");
} catch(Exception e) {
e.printStackTrace();
this.logger.error(e);
resData = "error";
} finally {
try {
outStream.flush();
outStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return resData;
}

相应的get和set

public InputStream getExportFile() {
return exportFile;
}
public void setExportFile(InputStream exportFile) {
this.exportFile = exportFile;
}
public String getExportFileName() {
return exportFileName;
}
public void setExportFileName(String exportFileName) {
this.exportFileName = exportFileName;
}


struts.xml配置

<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">attachment;filename="${exportFileName}"</param>
<param name="bufferSize">4096</param>
<param name="inputName">exportFile</param>
</result>


我在网上查了好多,基本都是这样实现的,但是不管我怎么改,都没有弹出下载,代码执行也没有报错。
说明:我使用的是poi-3.10版本。
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王者_来归 2014-10-07
  • 打赏
  • 举报
回复
问题已经解决,代码没有问题,问题在于提交的时候,我使用的是js中的post方式提交,正确的做法是使用submit提交就可以了。
senlinzhiwang 2014-10-07
  • 打赏
  • 举报
回复
没有人回复????正确的做法是使用submit提交
王者_来归 2014-10-06
  • 打赏
  • 举报
回复
再次说明一下,我使用的是struts2.3.16版本的,刚才测试了一下导出pdf,同样也导出不了,估计是struts2的配置有问题。但是在网上找了好多相关的导出配置,都是和我这个一样的,奇怪。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧