当前位置:实例文章 » 其他实例» [文章]excel导入数据转任意对象工具类

excel导入数据转任意对象工具类

发布人:shili8 发布时间:2025-03-11 20:25 阅读次数:0

**Excel 导入数据转任意对象工具类**

在实际开发中,我们经常需要从 Excel 文件中读取数据,并将其转换为特定的 Java 对象。例如,可能需要将 Excel 中的数据转换为 Java Bean、POJO 或其他自定义对象。在这种情况下,我们可以使用 Apache POI 库来读取 Excel 文件,然后手动创建相应的 Java 对象。

然而,这种方式虽然简单,但也比较低效和容易出错。因此,为了提高开发效率和减少错误率,我们可以编写一个通用的工具类来完成这个任务。这就是本文要介绍的内容。

**工具类设计**

我们的工具类将名为 `ExcelToObjectConverter`,它将负责从 Excel 文件中读取数据,并将其转换为指定的 Java 对象。我们将使用 Apache POI 库来读取 Excel 文件,然后使用 Java Reflection 来创建相应的 Java 对象。

**工具类代码**

javaimport 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 java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class ExcelToObjectConverter {

 private Class clazz; // 目标 Java 对象类 private List objects = new ArrayList<>(); // 转换后的对象列表 public ExcelToObjectConverter(Class clazz) {
 this.clazz = clazz;
 }

 /**
 * 从 Excel 文件中读取数据,并将其转换为指定的 Java 对象。
 *
 * @param filePath Excel 文件路径 */
 public void convert(String filePath) throws Exception {
 //读取 Excel 文件 Workbook workbook = new XSSFWorkbook(filePath);
 Sheet sheet = workbook.getSheetAt(0);

 // 获取 Excel 中的数据行数 int rowCount = sheet.getLastRowNum();

 // 创建目标 Java 对象列表 for (int i =1; i <= rowCount; i++) {
 Row row = sheet.getRow(i);
 Object obj = clazz.newInstance();
 objects.add(obj);

 // 将 Excel 中的数据转换为 Java 对象属性值 for (Cell cell : row) {
 Field field = clazz.getField(cell.getStringCellValue());
 field.set(obj, cell.getStringCellValue());
 }
 }

 workbook.close();
 }

 /**
 * 获取转换后的对象列表。
 *
 * @return 转换后的对象列表 */
 public List getObjects() {
 return objects;
 }
}

**使用示例**
javapublic class User {
 private String name;
 private int age;

 public User(String name, int age) {
 this.name = name;
 this.age = age;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getAge() {
 return age;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

public class Main {
 public static void main(String[] args) throws Exception {
 // 创建 Excel 导入数据转任意对象工具类 ExcelToObjectConverter converter = new ExcelToObjectConverter(User.class);

 // 从 Excel 文件中读取数据,并将其转换为 User 对象列表 converter.convert("user.xlsx");

 // 获取转换后的 User 对象列表 List users = converter.getObjects();

 // 输出转换后的 User 对象列表 for (User user : users) {
 System.out.println(user.getName() + ", " + user.getAge());
 }
 }
}

在上面的示例中,我们首先创建一个 `ExcelToObjectConverter` 实例,并将目标 Java 对象类传递给它。然后,我们使用 `convert()` 方法从 Excel 文件中读取数据,并将其转换为 User 对象列表。最后,我们使用 `getObjects()` 方法获取转换后的 User 对象列表,并输出它们。

**注意**

* 在实际开发中,可能需要根据具体需求进行调整和扩展。
* Apache POI 库的版本可能会影响代码的兼容性和性能。
* Java Reflection 的使用可能会带来一定的性能开销。

相关标签:windows
其他信息

其他资源

Top