gpt4 book ai didi

java - 使用 Apache Poi 从 Excel 创建对象

转载 作者:行者123 更新时间:2023-12-02 09:41:29 26 4
gpt4 key购买 nike

我正在尝试从 Excel 创建对象。 Excel 文件看起来像这样 enter image description here

我试图遵循这篇文章 How to convert my xlsx sheet to java object using Apache POI 中的这个想法。第一个答案看起来不错。然而,我对如何创建对象的部分不太了解。

public class Tr {

String empName;
String empID;
String empDept;

//Constructor
public Tr(String empName, String empID, String empDept) {
this.empName = empName;
this.empID = empID;
this.empDept = empDept;
}

//The following part will read Excel and return cell data
public static ArrayList<String> name = new ArrayList<String>();
public static ArrayList<String> deptId = new ArrayList<String>();
public static ArrayList<String> dName = new ArrayList<String>();

public ArrayList<String> getCellData(int cellNo) throws IOException {

FileInputStream file = new FileInputStream("C:\\MyTemp\\People.xlsx");
HSSFWorkbook book = new HSSFWorkbook(file);
HSSFSheet sheet = book.getSheet("Sheet1");
Iterator<Row> it = sheet.iterator();

ArrayList<String> cellData = new ArrayList<String>();
while (it.hasNext()) {
cellData.add(it.next().getCell(cellNo).getStringCellValue());
}
return cellData;
}

//Assigning cell data to variables and converting to string
public void assignEmployee() throws IOException {
empName = getCellData(0).toString();
empID = getCellData(1).toString();
empDept = getCellData(2).toString();
}

public static void main(String[] args) {

}
}

我们将不胜感激您的帮助或想法。谢谢。

最佳答案

您链接到的答案并不完全是这样的。该答案建议您应该加载 excel 文件一次,然后迭代每个 Row 以便将其分配给 Employee 实例。

所以基本用法如下:

    FileInputStream file = new FileInputStream("C:\\MyTemp\\People.xlsx");
HSSFWorkbook book = new HSSFWorkbook(file);
HSSFSheet sheet = book.getSheet("Sheet1");

Iterator<Row> it = sheet.iterator();
Employee emp = new Employee();
while(itr.hasNext()){
Row row = itr.next();
emp.assignEmployee(row);
// use emp instance here
}

换句话说,Employee 类将如下所示:

public class Employee{
private String empNo;
private String empName;

public void assignEmployee(Row row) {
empNo = row.getCell(0).toString();
empName = row.getCell(1).toString();
}
}

从这里,您可以将 Employee 的实例用于您需要的任何范围。我个人会更进一步,在 Employee 的构造函数中进行分配,而不是使用名为 assignEmployee 的方法(这可能会导致线程问题)。

    Iterator<Row> it = sheet.iterator();

while(itr.hasNext()){
Row row = itr.next();
Employee emp = new Employee(row);

// use emp instance here
}

关于java - 使用 Apache Poi 从 Excel 创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com