如何使用ApachePOI读取Java中与特定列单元对应的行?
我正在使用ApachePOI库读取Java中的Excel文件。我用测试数据创建了一个虚拟employees表。我只想读取这些行,并将它们存储在一个列表中,该列表的第3列或“AlternateEnumber”有一个值(不是null)。因此,对于具有“AlternateEnumber”的员工,我希望读取他们对应的行,并将所有单元格数据存储在列表中。 问题是我打印了excel中的所有单元格 请帮忙。谢谢如何使用ApachePOI读取Java中与特定列单元对应的行?,java,excel,list,arraylist,apache-poi,Java,Excel,List,Arraylist,Apache Poi,我正在使用ApachePOI库读取Java中的Excel文件。我用测试数据创建了一个虚拟employees表。我只想读取这些行,并将它们存储在一个列表中,该列表的第3列或“AlternateEnumber”有一个值(不是null)。因此,对于具有“AlternateEnumber”的员工,我希望读取他们对应的行,并将所有单元格数据存储在列表中。 问题是我打印了excel中的所有单元格 请帮忙。谢谢 package com.testcases; import java.io.FileInput
package com.testcases;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ReadExcelColumn {
public static void main(String[] args) throws IOException {
//
DataFormatter df = new DataFormatter();
FileInputStream fis = new FileInputStream("D:\\TestFiles\\testdata.xlsx");
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
List<String> nameList = new ArrayList<String>();
List<String> ecodeList = new ArrayList<String>();
List<String> mobileNumberList = new ArrayList<String>();
List<String> alternateNumberList = new ArrayList<String>();
String columnWanted = "AlternateNumber";
Integer columnNo = null;
Row firstRow = sheet.getRow(0);
for (Cell cell : firstRow) {
if (cell.getStringCellValue().equals(columnWanted)) {
columnNo = cell.getColumnIndex();
}
}
if (columnNo != null) {
for (Row row : sheet) {
Cell c = row.getCell(columnNo);
if (c != null) {
Row corrRow = c.getRow();
Cell rowCell0 = corrRow.getCell(0);
Cell rowCell1 = corrRow.getCell(1);
Cell rowCell2 = corrRow.getCell(2);
nameList.add(df.formatCellValue(rowCell0));
ecodeList.add(df.formatCellValue(rowCell1));
mobileNumberList.add(df.formatCellValue(rowCell2));
alternateNumberList.add(df.formatCellValue(c));
}
}
}
System.out.println(nameList);
System.out.println(ecodeList);
System.out.println(mobileNumberList);
System.out.println(alternateNumberList);
}
}
package com.testcases;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.DataFormatter;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
公共类ReadExcelColumn{
公共静态void main(字符串[]args)引发IOException{
//
DataFormatter df=新的DataFormatter();
FileInputStream fis=新的FileInputStream(“D:\\TestFiles\\testdata.xlsx”);
XSSF工作簿wb=新XSSF工作簿(fis);
XSSFSheet-sheet=wb.getSheetAt(0);
列表名称列表=新的ArrayList();
List ecodeList=new ArrayList();
List mobileNumberList=new ArrayList();
List alternateNumberList=new ArrayList();
String columnWanted=“AlternateNumber”;
整数columnNo=null;
Row firstRow=sheet.getRow(0);
用于(单元格:第一行){
if(cell.getStringCellValue().equals(columnWanted)){
columnNo=cell.getColumnIndex();
}
}
if(columnNo!=null){
用于(行:页){
单元格c=行。获取单元格(列号);
如果(c!=null){
Row corrRow=c.getRow();
单元格rowCell0=corrRow.getCell(0);
单元格rowCell1=corrRow.getCell(1);
单元格rowCell2=corrRow.getCell(2);
nameList.add(df.formatCellValue(rowCell0));
ecodeList.add(df.formatCellValue(rowCell1));
mobileNumberList.add(df.formatCellValue(rowCell2));
alternateNumberList.add(df.formatCellValue(c));
}
}
}
System.out.println(名称列表);
System.out.println(生态目录);
System.out.println(mobileNumberList);
System.out.println(alternateNumberList);
}
}
看起来你大部分时间都在那里。。。创建一个包含4个字段的Person
类并返回它们,或者只做一个映射列表并将4个值填充到一个映射中,每个匹配行一个映射