POI导出表格Java代码实现

在这里插入图片描述

1. 引入依赖

 <!--poi导出start-->
        <!-- excel -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.14</version>
        </dependency>
        <!--poi导出end-->

2. Excel导出核心代码

2.1 核心代码导入包

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;

2.2 核心util代码

public class ExcelUtils {

    /**
     * @param response
     * @param fileName excel文件名
     * @param headMap  表头map
     * @param dataList 表格数据
     */
    public static void exportXlsx(HttpServletResponse response, String fileName,
                                  Map<String, String> headMap, List<Map<String, Object>> dataList) {

        Workbook workbook = exportXlsx(fileName, headMap, dataList);
        response.setContentType("application/binary;charset=ISO8859_1");

        OutputStream outputStream = null;

        try {
            outputStream = response.getOutputStream();
            String fn = new String(fileName.getBytes(), "ISO8859_1");
            response.setHeader("Content-disposition", "attachment; filename=" + fn + ".xlsx");
            workbook.write(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    /**
     * 导出数据
     *
     * @param headMap
     * @param dataList
     */
    public static Workbook exportXlsx(String sheetName, Map<String, String> headMap, List<Map<String, Object>> dataList) {

        Workbook workbook = new XSSFWorkbook();

        Sheet sheet = workbook.createSheet(sheetName);


        int rowIndex = 0, columnIndex = 0;
        Set<String> keys = headMap.keySet();

        //表头
        Row row = sheet.createRow(rowIndex++);
        for (String key : keys) {
            Cell cell = row.createCell(columnIndex++);
            cell.setCellValue(headMap.get(key));
        }

        //内容
        if (dataList != null && !dataList.isEmpty()) {
            for (Map<String, Object> map : dataList) {
                row = sheet.createRow(rowIndex++);
                columnIndex = 0;
                for (String key : keys) {
                    Cell cell = row.createCell(columnIndex++);
                    setCellValue(cell, map.get(key));
                }
            }
        }

        return workbook;
    }

    private static void setCellValue(Cell cell, Object obj) {
        if (obj == null) {
            return;
        }
        if (obj instanceof String) {
            cell.setCellValue((String) obj);
        } else {
            cell.setCellValue(obj.toString());
        }
    }

}

2.3 Controller表格导出实现

package com..自己的包...controller;

import com.zy.checkdata.util.ExcelUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: Apollo
 * @Date: 2020/10/9 10:37
 * @Description:
 */
@RestController
public class ExcelController {

    @GetMapping("/excel")
    public String exportDomain(HttpServletResponse repsonse) {
        //列头名
        Map<String, String> excelTitleMap = new LinkedHashMap<String, String>();
        excelTitleMap.put("id", "id");
        excelTitleMap.put("name", "name");
        excelTitleMap.put("sex", "sex");

        //列值
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(5);
        Map<String, Object> map = new LinkedHashMap<String, Object>();
        map.put("id", "1");
        map.put("name", "小红");
        map.put("sex", "女");

        Map<String, Object> map1 = new LinkedHashMap<String, Object>();
        map1.put("id", "2");
        map1.put("name", "小蓝");
        map1.put("sex", "男");
        list.add(map);
        list.add(map1);

        ExcelUtils.exportXlsx(repsonse, "fileName", excelTitleMap, list);
        return null;
    }
}

3. Excel导出结果展示

3.1 导出链接

http://localhost:8080/excel

3.2 导出结果

在这里插入图片描述

就先说到这 \color{#008B8B}{ 就先说到这} 就先说到这
在下 A p o l l o \color{#008B8B}{在下Apollo} 在下Apollo
一个爱分享 J a v a 、生活的小人物, \color{#008B8B}{一个爱分享Java、生活的小人物,} 一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞! \color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!} 咱们来日方长,有缘江湖再见,告辞!

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用Apache POI库来实现表格导出,以下是一个简单的示例代码: ```java import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelExporter { public static void export(String[] headers, Object[][] data, String filename) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 创建表头 Row headerRow = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); } // 填充数据 for (int i = 0; i < data.length; i++) { Row row = sheet.createRow(i + 1); for (int j = 0; j < data[i].length; j++) { Cell cell = row.createCell(j); cell.setCellValue(data[i][j].toString()); } } // 输出到文件 FileOutputStream outputStream = new FileOutputStream(filename); workbook.write(outputStream); outputStream.close(); workbook.close(); } public static void main(String[] args) throws IOException { String[] headers = {"姓名", "年龄", "性别"}; Object[][] data = { {"张三", 20, "男"}, {"李四", 25, "女"}, {"王五", 30, "男"} }; export(headers, data, "output.xlsx"); } } ``` 在这个示例代码中,我们创建了一个`export()`方法,该方法接收表头、数据和文件名三个参数,使用Apache POI库创建一个Excel工作簿,并将表头和数据填充到工作簿中的一个工作表中,最后将工作簿输出到指定的文件中。在`main()`方法中,我们调用了`export()`方法来导出一个示例表格

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值