专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 JavaWeb导出excel文件的方法

JavaWeb导出excel文件的方法

更新时间:2022-03-17 10:29:47 来源:赢咖4 浏览3013次

JavaWeb导出excel文件的方法其实很简单,只需要两步就可以啦!

1.在需要的controller里面加入下面接口代码:

 /**
     * excel导出controller层代码
     *
     * @param params
     * @return
     */
    @RequestMapping("exportExcel")
    @ResponseBody
    public String exportExcel(HttpServletResponse response, Map<String, Object> params) {
        HSSFWorkbook workbook = excelService.exportExcel(map);
        try {
            if (response != null) {
                response.setContentType("application/vnd.ms-excel;charset=utf-8");
                response.setHeader("Content-Disposition",
                        "attachment;filename=\"" + new String(("excel名称" + ".xls").getBytes("gb2312"), "ISO8859-1"));
                OutputStream out = response.getOutputStream();
                workbook.write(out);
                out.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

pom.xml文件加上poi的依赖

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.9</version>
</dependency>

2.在serviceImpl里面加入下面方法:

/**
     * 导出excel信息
     *
     * @param map
     * @return
     */
    @Override
    public HSSFWorkbook exportExcel(Map<String,Object> map) { 
        //获取需要生成excel数据
        List<UserDto> userDtoList=exportMapper.getUserInfo(map);        
        //如果数据为空,则不继续往下走,直接return
        if(userDtoList==null){
            return null;
        } 
        HSSFWorkbook wb = new HSSFWorkbook();
        // 创建一个Excel的Sheet
        HSSFSheet sheet = wb.createSheet("first sheet");
        //表头属性名
        String[] propertyName={"序号","姓名","性别","年龄","地址"};        
        // 获取表需要的列数
        int length = propertyName.length;
        // ---------------下面设置表的第一行也就是通常的title----------------------
        // 设置行-下面为第一行
        HSSFRow row0 = sheet.createRow(0);
        // 设置列-下面为第一行的第一列
        HSSFCell cell00 = row0.createCell(0);
        // 设置字体
        HSSFFont headfont = wb.createFont();
        headfont.setFontName("黑体");
        // 字体大小
        headfont.setFontHeightInPoints((short) 22);
        // 设置样式
        HSSFCellStyle headstyle = wb.createCellStyle();
        // 使用了上面设置的字体样式
        headstyle.setFont(headfont);
        headstyle.setLocked(true);
        // 自动换行
        headstyle.setWrapText(false);
        // 合并单元格:参数说明:1:开始行 2:结束行 3:开始列 4:结束列
        // 注意,在这里使用表字段名-1来作结束列,因为我们是从0开始数的,所以要减去一个
        CellRangeAddress range = new CellRangeAddress(0, 0, 0, length - 1);
        // 将表的合并单元格样式设置进去
        sheet.addMergedRegion(range);
        // 设置表的第一行的第一列的样式
        cell00.setCellStyle(headstyle);
        // 设置表的第一行的第一列的value
        cell00.setCellValue("excel标题");
        // ---------------下面开始设置表的第二行,通常为字段名----------------------
        HSSFRow row1 = sheet.createRow(1);
        // 字段名使用的字体
        HSSFFont columnHeadFont = wb.createFont();
        columnHeadFont.setFontName("宋体");
        // 字体大小
        columnHeadFont.setFontHeightInPoints((short) 10);
        // 列头的样式
        HSSFCellStyle columnHeadStyle = wb.createCellStyle();
        // 设置上面已经设置好的字体样式
        columnHeadStyle.setFont(columnHeadFont);
        columnHeadStyle.setLocked(true);
        columnHeadStyle.setWrapText(false);
        // 设置第二行的行高
        row1.setHeight((short) 750);
        // 创建在这行中的列
        HSSFCell cell1 = null;
        for (int i = 0; i < length; i++) {
            cell1 = row1.createCell(i);
            // 获取数组中的表头字段名
            cell1.setCellValue(propertyName[i]);
            // 给它设置风格
            cell1.setCellStyle(columnHeadStyle);
        }
        // ---------------下面开始设置表里面的内容-----------------------------
        // 设置字体
        HSSFFont font = wb.createFont();
        font.setFontName("宋体");
        font.setFontHeightInPoints((short) 10);
        // 设置其风格
        HSSFCellStyle style = wb.createCellStyle();
        style.setFont(font);
        style.setWrapText(false);
        HSSFRow row = null;
        HSSFCell cell = null;
        int valueStartRow = 2;
        // 赋值
        for (UserDto userDto  : userDtoList) {
            row = sheet.createRow(valueStartRow);
            cell = row.createCell(0);
            cell.setCellValue(userDto.getIndex());
            cell.setCellStyle(style);            
            cell = row.createCell(1);
            cell.setCellValue(userDto.getName());
            cell.setCellStyle(style); 
            cell = row.createCell(2);
            cell.setCellValue(userDto.getGender());
            cell.setCellStyle(style); 
            cell = row.createCell(3);
            cell.setCellValue(userDto.getAge());
            cell.setCellStyle(style); 
            cell = row.createCell(4);
            cell.setCellValue(userDto.getAddress());
            cell.setCellStyle(style);
            valueStartRow++;
        }
        return wb; 
    }

搞定了,现在可以生成excel了。

以上就是关于“JavaWeb导出excel文件的方法”介绍,大家如果想了解更多相关知识,可以关注一下赢咖4的Java视频,里面的视频教程细致全面,从入门到精通,适合没有基础的小白学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>