当前位置: 代码迷 >> Java Web开发 >> struts2+poi导出Excel,没有弹出导出下载的有关问题
  详细解决方案

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

热度:172   发布时间:2016-04-16 21:51:23.0
struts2+poi导出Excel,没有弹出导出下载的问题
各位好,如题,以下是代码
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版本。
------解决思路----------------------
没有人回复????正确的做法是使用submit提交
  相关解决方案