TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

Java实现Excel导入导出功能的技术详解

2026-04-23
/
0 评论
/
2 阅读
/
正在检测是否收录...
04/23

正文:

在企业级应用中,Excel文件的导入导出是高频需求,例如数据报表生成、批量数据录入等场景。Java生态中,Apache POI库是处理Excel文件的首选工具,支持.xls.xlsx格式。本文将分步骤讲解如何实现这一功能。


一、环境准备

首先,在项目中引入Apache POI依赖。如果使用Maven,在pom.xml中添加以下依赖:


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>


二、导出Excel文件

以下代码演示如何将数据列表导出为.xlsx文件:


import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.util.List;

public class ExcelExporter {
    public static void exportToExcel(List<String[]> data, String filePath) {
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("数据报表");
            
            // 创建表头
            Row headerRow = sheet.createRow(0);
            String[] headers = {"ID", "姓名", "年龄"};
            for (int i = 0; i < headers.length; i++) {
                Cell cell = headerRow.createCell(i);
                cell.setCellValue(headers[i]);
            }
            
            // 填充数据
            for (int i = 0; i < data.size(); i++) {
                Row row = sheet.createRow(i + 1);
                String[] rowData = data.get(i);
                for (int j = 0; j < rowData.length; j++) {
                    row.createCell(j).setCellValue(rowData[j]);
                }
            }
            
            // 写入文件
            try (FileOutputStream fos = new FileOutputStream(filePath)) {
                workbook.write(fos);
            }
            System.out.println("Excel导出成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键点说明
1. 使用XSSFWorkbook处理.xlsx格式,HSSFWorkbook处理.xls格式。
2. 通过SheetRow对象逐行构建表格。


三、导入Excel文件

导入功能需要解析Excel文件并转换为Java对象。示例代码如下:


import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class ExcelImporter {
    public static List<String[]> importFromExcel(String filePath) {
        List<String[]> data = new ArrayList<>();
        try (Workbook workbook = WorkbookFactory.create(new File(filePath))) {
            Sheet sheet = workbook.getSheetAt(0); // 读取第一个Sheet
            
            for (Row row : sheet) {
                if (row.getRowNum() == 0) continue; // 跳过表头
                String[] rowData = new String[row.getLastCellNum()];
                for (Cell cell : row) {
                    int columnIndex = cell.getColumnIndex();
                    switch (cell.getCellType()) {
                        case STRING -> rowData[columnIndex] = cell.getStringCellValue();
                        case NUMERIC -> rowData[columnIndex] = String.valueOf(cell.getNumericCellValue());
                        default -> rowData[columnIndex] = "";
                    }
                }
                data.add(rowData);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return data;
    }
}

注意事项
1. WorkbookFactory自动识别文件格式(.xls.xlsx)。
2. 通过CellType判断单元格数据类型,避免类型转换错误。


四、实际应用优化

  1. 性能优化:大数据量导出时,使用SXSSFWorkbook(流式API)避免内存溢出。
  2. 异常处理:添加文件格式校验和空值处理逻辑。
  3. 扩展功能:结合Spring MVC实现Web端下载,或集成EasyExcel(阿里开源库)提升解析效率。
数据处理Java代码示例Apache POIExcel导入导出
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/44058/(转载时请注明本文出处及文章链接)

评论 (0)
38,308 文章数
92 评论量

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月