欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA使用poi 实现Excel导出功能

程序员文章站 2022-04-15 18:04:01
项目场景:JAVA使用poi 实现Excel导出功能pom.xml org.apache.poi poi 3.6 创建导出工具类pack...

项目场景:

JAVA使用poi 实现Excel导出功能

pom.xml

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

创建导出工具类

package com.safesoft.utils;

import org.apache.poi.hssf.usermodel.*;


public class ExcelUtils {

    /**
     * 导出Excel
     * @param sheetName sheet名称
     * @param title 标题
     * @param values 内容
     * @param wb HSSFWorkbook对象
     * @return
     */
    public static HSSFWorkbook getHSSFWorkbook(String sheetName, String []title, String [][]values, HSSFWorkbook wb){

        // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
        if(wb == null){
            wb = new HSSFWorkbook();
        }

        // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet(sheetName);

        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
        HSSFRow row = sheet.createRow(0);

        // 第四步,创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

        //声明列对象
        HSSFCell cell = null;

        //创建标题
        for(int i=0;i<title.length;i++){
            cell = row.createCell(i);
            cell.setCellValue(title[i]);
            cell.setCellStyle(style);
        }

        //创建内容
        for(int i=0;i<values.length;i++){
            row = sheet.createRow(i + 1);
            for(int j=0;j<values[i].length;j++){
                //将内容按顺序赋给对应的列对象
                row.createCell(j).setCellValue(values[i][j]);
            }
        }
        return wb;
    }
}

Controller层

1.从数据库中获取需要导出的数据的集合
2.设置文件名 sheet名称 列标题
3.因为excel是由行和列组成的表格 通过二维数组循环的方式将参数放入excel中对应的列和行的位置
4.使用创建好的工具类模板

service层 dao层没什么复杂的业务 只需要将需要导出的数据取出来返回一个集合就可

    /**
     * 导出报表
     *
     * @return
     */
    @RequestMapping(WebURIMappingConstant.URI_ASSET_EXPORT)
    @ResponseBody
    public void export( AssetCondition condition,HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map<String, Object> map = new HashMap<>();
        map.put("sblx", condition.getSblx());
        map.put("zcbh", condition.getZcbh());
        map.put("ljdz", condition.getLjdz());
        map.put("txdz", condition.getTxdz());
        map.put("sbmc", condition.getSbmc());
        // 获取需要导出的数据
        List<AssetPageVO> list = assetService.getPage(map);
        
        //excel标题
        String[] title = {"资产编号", "设备类型", "设备名称", "厂家","型号","生产日期","逻辑地址",
                "安装地址","状态","资产标识","省市县","创建时间"};

        //excel文件名
        String fileName = "计量资产管理" + System.currentTimeMillis() + ".xls";

        //sheet名
        String sheetName = "计量资产管理";

        String [][] content = new String[list.size()][12];

        for (int i = 0; i < list.size(); i++) {
            content[i] = new String[title.length];
            AssetPageVO obj = list.get(i);
            content[i][0] = obj.getZcbh() == null ? "":obj.getZcbh();
            content[i][1] = getSblxName(obj.getSblx());
            content[i][2] = getSbmcName(Integer.valueOf(obj.getSbmc()));
            content[i][3] = obj.getSccj() == null ? "":obj.getSccj();
            content[i][4] = obj.getSbxhdm() == null ? "":obj.getSbxhdm();
            content[i][5] = obj.getScrq() == null ? "":obj.getScrq();
            content[i][6] = obj.getLjdz() == null ? "":obj.getLjdz();
            content[i][7] = obj.getTxdz() == null ? "":obj.getTxdz();
            content[i][8] = getZtName(obj.getBdzt());
            content[i][9] = obj.getZdzcbs() == null ? "": obj.getZdzcbs();
            content[i][10] = obj.getProvince()+" "+obj.getCity()+" "+obj.getCounty();
            content[i][11] = obj.getCreateDate();
        }

        //创建HSSFWorkbook
        HSSFWorkbook wb = ExcelUtils.getHSSFWorkbook(sheetName, title, content, null);

        //响应到客户端
        try {
            this.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

本文地址:https://blog.csdn.net/weixin_41807355/article/details/109614303