首页 新闻 会员 周边

关于导出问题

0
[已解决问题] 解决于 2018-05-30 17:37
复制代码
    @ApiOperation(value="导出excel", notes = "导出excel")
    @PostMapping(value="/output")
    @ResponseBody
    public String output(HttpServletResponse response) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
//建立新的sheet对象(excel的表单)
        HSSFSheet sheet=wb.createSheet("成绩表");
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1=sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
        HSSFCell cell=row1.createCell(0);
        //设置单元格内容
        cell.setCellValue("学员考试成绩一览表");
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
//在sheet里创建第二行
        HSSFRow row2=sheet.createRow(1);
        //创建单元格并设置单元格内容
        row2.createCell(0).setCellValue("姓名");
        row2.createCell(1).setCellValue("班级");
        row2.createCell(2).setCellValue("笔试成绩");
        row2.createCell(3).setCellValue("机试成绩");
        //在sheet里创建第三行
        HSSFRow row3=sheet.createRow(2);
        row3.createCell(0).setCellValue("李明");
        row3.createCell(1).setCellValue("As178");
        row3.createCell(2).setCellValue(87);
        row3.createCell(3).setCellValue(78);


//输出Excel文件
        OutputStream output=response.getOutputStream();
        response.reset();
        response.setHeader("Content-disposition", "attachment; filename=details.xls");
        response.setContentType("application/vnd.ms-excel");
        wb.write(output);
        output.close();
//        FileOutputStream fout = new FileOutputStream("E:/Members.xls");
//        wb.write(fout);
//        fout.close();
        return null;
    }
复制代码

导出到指定路径下没有问题,下载有问题,各位帮忙看看

刘凌枫羽的主页 刘凌枫羽 | 菜鸟二级 | 园豆:355
提问于:2018-05-30 14:42
< >
分享
最佳答案
0

swagger-ui那个页面导出可能会有问题, 好像是不太支持
建议直接访问接口测试一下

奖励园豆:5
、熙和 | 小虾三级 |园豆:1508 | 2018-05-30 17:32

可以了。。。

刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 17:36
其他回答(2)
0

先下个demo 跑跑  依葫芦画瓢

筱浬 | 园豆:601 (小虾三级) | 2018-05-30 16:14

这个就是找到demo

支持(0) 反对(0) 刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 16:15

@刘凌枫羽: 调试 看错误信息

支持(0) 反对(0) 筱浬 | 园豆:601 (小虾三级) | 2018-05-30 16:16

@筱浬: 没有错误

支持(0) 反对(0) 刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 16:18

@筱浬: 导出后没有显示下载信息

支持(0) 反对(0) 刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 16:18

@刘凌枫羽: 不会吧 肯定是你哪些地方弄错了   demo 你跑过吗  对比一下

支持(0) 反对(0) 筱浬 | 园豆:601 (小虾三级) | 2018-05-30 16:19

@筱浬:要是导出到指定路径一点问题都没有

支持(0) 反对(0) 刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 16:19

@刘凌枫羽: 那可能是你下载的demo 不对  导出一般都是自己直接下载在浏览器的 不需要写路径 

支持(0) 反对(0) 筱浬 | 园豆:601 (小虾三级) | 2018-05-30 16:22

@筱浬: OutputStream output=response.getOutputStream(); response.reset(); response.setHeader("Content-disposition", "attachment; filename=details.xls"); response.setContentType("application/vnd.ms-excel"); wb.write(output); output.close();这个是啥

支持(0) 反对(0) 刘凌枫羽 | 园豆:355 (菜鸟二级) | 2018-05-30 16:23

@刘凌枫羽: 

public static void ExportDataTableToExcel(DataTable sourceTable, string fileName, string sheetName)
{
MemoryStream ms = ExportDataTableToExcel(sourceTable, sheetName) as MemoryStream;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End(); ms.Close(); ms = null;
}

我这边调用方法即可完成

支持(0) 反对(0) 筱浬 | 园豆:601 (小虾三级) | 2018-05-30 16:33
0

这个问题是怎么解决的,我用上面的代码可以下载下来,但是打开文件的时候显示文件格式与扩展名不匹配,打开都是乱码

lakers林 | 园豆:202 (菜鸟二级) | 2018-08-20 17:05

我也是用的swagger

支持(0) 反对(0) lakers林 | 园豆:202 (菜鸟二级) | 2018-08-20 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册