【javaWeb】Struts 2导出excel文件

一、功能:将界面table数据,导出为excel文件保存

二、具体实现:

2.1 jsp

序号书名作者价格
1科幻世界匿名10
2语文驾教育出版社23.5
3落花张三10.5

注:button: <input  type="button" value="导出excel" οnclick="exportExcel()">

        确定 引入调用的正确 js文件

2.2 js

function exportExcel(){
    alert("导出"); 
    var archiveaccount = document.forms['arcAccount'];
    archiveaccount.submit();
}

2.3 action

public String exportExcel() throws Exception {
        List<List<Object>> data = getExportData();    //将表格数据转换为list,此方法省略
        String fn = new String(("ArchiveAccount"+new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())).getBytes(), "ISO-8859-1")+ ".xls";    //设置导出文件名
        if(createExcel(fn, data, "统计结果")){
            return "success";
        }
           return "init";
    }

   /**
     * 创建新的Excel 工作簿
     * */
    public boolean createExcel(String filename, List<List<Object>> data,String sheetName) {
        HSSFWorkbook workbook = null;
        HSSFSheet sheet = null;
        HSSFRow[] rows = null;
        HSSFCell[][] cells = null;
        workbook = new HSSFWorkbook();
        if (sheetName.trim().equals("")) {
            sheet = workbook.createSheet("表");
        } else {
            sheet = workbook.createSheet(sheetName);
        }
        try {
            int row = 0;
            int col = 0;
            if (data.size() > 0) {
                row = data.size();
                col = data.get(0).size();
            }
            rows = new HSSFRow[row];
            cells = new HSSFCell[row][col];
            for (int i = 0; i < data.size(); i++) {
                rows[i] = sheet.createRow((short) i);
                for (int j = 0; j < data.get(i).size(); j++) {
                    cells[i][j] = rows[i].createCell((short) j);
                    cells[i][j].setCellType(HSSFCell.CELL_TYPE_STRING);
                    if (data.get(i).get(j) != null
                            && !data.get(i).get(j).toString().trim().equals("")) {
                        cells[i][j].setCellValue(data.get(i).get(j).toString()
                                .trim());
                    } else {
                        cells[i][j].setCellValue("");
                    }
                }
            }
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
            HttpUitls.getResponse().setHeader("Content-disposition","attachment; filename=" +filename);
            workbook.write(baos);
            byte[] ba = baos.toByteArray();  
            excelStream = new ByteArrayInputStream(ba);  
            return true;
        } catch (Exception e) {
            return false;
        }
    }

2.4 struts.xml

 <action name="*ArchiveAccount" class="com.personalize.action.archiveaccount.ArchiveAccountAction" method="{1}">
            <result name="init">jspNew/archiveaccount/ArchiveAccount.jsp</result>
             <result name="success" type="stream">
                    <param name="contentType">application/vnd.ms-excel</param>     <!-- 注意这里的ContentType -->
                    <param name="contentDisposition">attachment;filename="${fileName}"</param> <!--  导出文件名 -->
                    <param name="inputName">excelStream</param> <!-- 这里需要和Action里的变量名一致 -->
                    <param name="bufferSize">4096</param>
             </result>
        </action>

三、执行效果

点击导出弹出文件下载对话框,点击保存,弹出选择路径对话框,选择路径点击保存即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值