浏览器下载服务器上的文件(EXCEL)

这是Excel类对Excel的部分操作

public HSSFWorkbook exportExcel(String title ,Map<String, String> headers, List<Map<String, Object>> dataBase) {

        sheet = workbook.getSheetAt(0); // 默认的 第0个工作簿

        int i = 0;
        Map<String, Integer> cellAt = new HashMap<>();
        row = sheet.createRow(0);

        for (Map.Entry<String, String> map : headers.entrySet()) {
            String key = map.getKey();
            cell = row.createCell(i);
            cell.setCellValue(map.getValue());
            cellAt.put(key, i);
            i++;
        }
        for (int j = 0; j < dataBase.size(); j++) {
            row = sheet.createRow(j + 1);
            for (Map.Entry<String, Integer> mapd : cellAt.entrySet()) {
                Integer value = mapd.getValue();
                String key = mapd.getKey();
                cell = row.createCell(value);

                Map<String, Object> dataBadeMap = dataBase.get(j);
                Object dataBadeMapValue = dataBadeMap.get(key);
                String dataBadeMapValueToString = dataBadeMapValue != null ? dataBadeMapValue.toString() : "";

                cell.setCellValue(dataBadeMapValueToString);
            }
        }

        HttpServletResponse response = Noxa.instance.getNoxaDispatcher().getResponse();
        try(OutputStream out = response.getOutputStream();){
                response.reset();
                response.setContentType("application/x-download");//告诉浏览器你要下载东西才能弹出下载框让你选择下载路径
                response.addHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(title+".xls", "UTF-8"));
                workbook.write(out);
                if(log.isInfoEnabled()){
                    log.info("导出成功");
                }
                out.flush();
        } catch (Exception e) {
            log.error("导出失败");
        }

    return workbook;
}

----------这一块是下载到服务器本地的


        /*try {
            FileOutputStream os = new FileOutputStream("D://upload//"+title+".xls");
            workbook.write(os);
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return workbook;
    }
*/



----------

这里有个问题就是你通过Ajax来请求浏览器是不理你的,但是后台数据是有的,也照样有返回。但是浏览器就是不理你,我也不知道问题在哪,希望哪个大神可以指点一下。不过在界面上我们可以通过a标签的href属性来请求,或者通过form表单来提交。

第一次写。多指教

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值