在IntelliJ IDEA中基于Maven与POI创建Excel处理项目
环境准备:Maven安装与配置
首先从Apache Maven官网下载压缩包,解压至本地目录(如 D:\apache-maven-3.9.9)。设置系统环境变量:
- MAVEN_HOME:指向解压目录的
bin文件夹路径,例如D:\apache-maven-3.9.9\bin。 - 将
%MAVEN_HOME%添加到 PATH 环境变量中。
验证安装:打开命令行输入 mvn -v,若显示版本信息则表示安装成功。
自定义本地仓库位置
创建一个本地缓存目录,如 D:\jarstore\repository,用于存放所有依赖的JAR包。
配置settings.xml
编辑 Maven安装目录/conf/settings.xml 文件,进行以下三处关键配置:
1. 指定本地仓库路径
<localRepository>D:/jarstore/repository</localRepository>
2. 使用阿里云镜像加速依赖下载
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
3. 设置JDK版本为17
<profile>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
</properties>
</profile>
IDEA中集成Maven配置
启动 IntelliJ IDEA,关闭现有项目后进入全局设置:
- 进入 File → Settings → Build, Execution, Deployment → Build Tools → Maven。
- 配置如下选项:
- Maven home path:填写 Maven 安装根目录,如
D:\apache-maven-3.9.9。 - User settings file:选择
Override并指定自定义的settings.xml路径。 - Local repository:设置为之前创建的本地仓库路径
D:\jarstore\repository。
- Maven home path:填写 Maven 安装根目录,如
- 保存设置并重启 IDEA 以使更改生效。
创建Maven项目
在 IDEA 中新建项目时选择 Java + Maven,并完成以下设置:
- Group ID:如
com.example - Artifact ID:如
excel-processor - 确保所选 JDK 版本与
settings.xml中一致(如 17)。
首次创建会自动下载依赖插件,耗时较长,请耐心等待。完成后可看到项目中的 pom.xml 文件。
添加POI库支持
在 pom.xml 中加入以下依赖以支持读写 .xlsx 文件:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.1.1</version>
</dependency>
</dependencies>
保存后,右键点击 pom.xml 选择 Reload Project 或 Reimport 触发依赖下载。
编写生成Excel文件的代码
创建 Java 类 CreateExcel.java,实现如下功能:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateExcel {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet("Books");
// 示例数据
Object[][] data = {
{"书名", "作者", "页数"},
{"深入理解计算机系统", "Randal E. Bryant", 1000},
{"算法导论", "Thomas H. Cormen", 1300},
{"设计模式:可复用面向对象软件的基础", "Gang of Four", 500}
};
for (int rowIdx = 0; rowIdx < data.length; rowIdx++) {
Row row = sheet.createRow(rowIdx);
Object[] rowData = data[rowIdx];
for (int colIdx = 0; colIdx < rowData.length; colIdx++) {
Cell cell = row.createCell(colIdx);
cell.setCellValue(rowData[colIdx].toString());
}
}
// 自动调整列宽
for (int i = 0; i < data[0].length; i++) {
sheet.autoSizeColumn(i);
}
// 写入文件
try (FileOutputStream out = new FileOutputStream("books.xlsx")) {
workbook.write(out);
}
System.out.println("Excel 文件已生成:books.xlsx");
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行该类,将在项目根目录下生成 books.xlsx 文件。
使用FastExcel替代方案
若追求更高性能和更低内存占用,可选用 FastExcel(原 EasyExcel):
<dependency>
<groupId>cn.idev.excel</groupId>
<artifactId>fastexcel</artifactId>
<version>1.0.0</version>
</dependency>
使用示例代码:
import cn.idev.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class FastExcelExample {
public static void main(String[] args) {
String fileName = "users.xlsx";
List<UserRecord> userList = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
UserRecord user = new UserRecord();
user.setName("用户" + i);
user.setAge(20 + i);
userList.add(user);
}
EasyExcel.write(fileName, UserRecord.class)
.sheet("人员列表")
.doWrite(userList);
}
public static class UserRecord {
private String name;
private Integer age;
// getter/setter
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
}
}
运行后生成 users.xlsx,结构清晰且效率更高。