java excel读取一列

java excel读取一列,java,excel,apache-poi,xssf,Java,Excel,Apache Poi,Xssf,我有一列(B),我需要取B3和B20之间的所有值 这是我的密码 try { OPCPackage fs; fs = OPCPackage.open(new File(getFilePath())); XSSFWorkbook wb = new XSSFWorkbook(fs); XSSFSheet sheet = wb.getSheet("Master column name - Used Ca

我有一列(B),我需要取B3和B20之间的所有值

这是我的密码

try {
            OPCPackage fs;

            fs =  OPCPackage.open(new File(getFilePath()));

            XSSFWorkbook wb = new XSSFWorkbook(fs);
            XSSFSheet sheet = wb.getSheet("Master column name - Used Car");
            XSSFRow row;
            CellReference cr = new CellReference("B3");

            row = sheet.getRow(4); 
            System.out.println(row);
但正如你所看到的,我得到了一个值,直到B20我才知道如何得到单元格B3的值


请帮忙

您是否尝试过更换此线路:

CellReference cr = new CellReference("B3");
与:

i、 e


要从excel中读取特定列或单元格的值,可以尝试以下操作

public static void readFromExcel2(){
    try{
        FileInputStream file = new FileInputStream(new File("java_excel.xlsx"));//place path of your excel file
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        XSSFSheet sheet = workbook.getSheetAt(1);//which sheet you want to read

        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()){
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext()){

                Cell cell = cellIterator.next();
                if(cell.getColumnIndex()<2&&(cell.getRowIndex()>=3&&cell.getRowIndex()<=20)) {
                     {

                        switch (cell.getCellType()) {
                            case Cell.CELL_TYPE_NUMERIC:
                                System.out.print((int) cell.getNumericCellValue()+" \t" );
                                break;
                            case Cell.CELL_TYPE_BLANK:
                                System.out.print(" ");
                                break;
                            case Cell.CELL_TYPE_STRING: {
                                System.out.print(cell.getStringCellValue());
                            }

                        }
                    }
                }
            }
            System.out.println(" ");
        }
        file.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}
public static void readFromExcel2(){
试一试{
FileInputStream file=newfileinputstream(新文件(“java_excel.xlsx”);//放置excel文件的路径
XSSF工作簿=新XSSF工作簿(文件);
XSSFSheet sheet=workbook.getSheetAt(1);//您要阅读哪张工作表
迭代器rowIterator=sheet.Iterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();

如果(cell.getColumnIndex()=3&&cell.getRowIndex(),我得到
Java.lang.NumberFormatException:对于输入字符串:“3:B20”
使用
AreaReference(CellReference左上角,CellReference右下角)
你能给我一个工作代码吗?这个代码没有解释任何东西。答案提供了你可以替换的代码,如果你需要每个单独的引用,你可以使用以下方法:
getAllReferencedCells()
System.out.println(cr.getAllReferencedCells());
AreaReference ar = new AreaReference("B3:B20");

for (cr : ar.getAllReferencedCells()) {
    System.out.print(cr.formatAsString());
    System.out.print(" - ");
}
System.out.println();
public static void readFromExcel2(){
    try{
        FileInputStream file = new FileInputStream(new File("java_excel.xlsx"));//place path of your excel file
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        XSSFSheet sheet = workbook.getSheetAt(1);//which sheet you want to read

        Iterator<Row> rowIterator = sheet.iterator();
        while(rowIterator.hasNext()){
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext()){

                Cell cell = cellIterator.next();
                if(cell.getColumnIndex()<2&&(cell.getRowIndex()>=3&&cell.getRowIndex()<=20)) {
                     {

                        switch (cell.getCellType()) {
                            case Cell.CELL_TYPE_NUMERIC:
                                System.out.print((int) cell.getNumericCellValue()+" \t" );
                                break;
                            case Cell.CELL_TYPE_BLANK:
                                System.out.print(" ");
                                break;
                            case Cell.CELL_TYPE_STRING: {
                                System.out.print(cell.getStringCellValue());
                            }

                        }
                    }
                }
            }
            System.out.println(" ");
        }
        file.close();
    }catch (Exception e){
        e.printStackTrace();
    }
}