我正在编写一个Java程序以从Excel工作表中获取数据。

从下面的程序中,我能够检索整个数据。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.ss.formula.functions.Column;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadData {

    @SuppressWarnings({ "resource", "null" })
    public static void main(String[] args) throws IOException {

        // get file
        FileInputStream fin = new FileInputStream(
                new File("C:\\A2015.xlsx"));

        // create book holding object
        XSSFWorkbook wb = new XSSFWorkbook(fin);

        // get sheet

        XSSFSheet sheet = wb.getSheetAt(0);

        // iterate through rows

        Iterator<Row> rowIt = sheet.rowIterator();

        while (rowIt.hasNext()) {
            XSSFRow row = (XSSFRow) rowIt.next();

            // iterate through Columns

            Iterator<Cell> colIt = row.cellIterator();
            while (colIt.hasNext()) {
                Cell cell = colIt.next();
                System.out.println(cell.toString());
            }
            System.out.println();

        }

    }
}


但是这里我的情况是有将近45-47列,其中没有一些不需要的数据(对我来说,但对某些其他团队来说则是必需的)。每列都有标题,在这45-47列中,我只想从12列中提取数据,并且在Excel工作表的其余列之间随机放置。

我的问题是,是否有一种方法可以仅通过使用标题来遍历所有行并从这12列中获取数据,如果可以,请让我知道如何提取它。

我正在使用Apache POI。

谢谢

最佳答案

    public static short getCellNum(String cellCode)throws InvalidNameException{
       char[] cellCodeU = cellCode.toUpperCase().toCharArray();
       int length = cellCodeU.length;
       int cellNumber = 0;
       for (int j=0;j<length;j++){
          if (cellCodeU[j]<'A' || cellCodeU[j]>'Z')
            throw new InvalidNameException("Wrong column index: " + cellCode);
          cellNumber = cellNumber*CELL_NUMBER_IN_SHEET + (cellCodeU[j]-64);
       }
       cellNumber-=1;
       if (cellNumber<0)
          throw new InvalidNameException("Wrong column index: " + cellCode);
       return (short)cellNumber;
    }


 String columnsToRead = new String[]{"AA", "AB", "AU"};

 while (rowIt.hasNext()) {
        XSSFRow row = (XSSFRow) rowIt.next();
        for (int a = 0; a < columnsToRead.length; a++){
            Cell cell = getCell(getCellNum(columnsToRead[a]));
            System.out.println(cell.toString());
        }
 }

关于java - 仅读取Excel工作表中的几列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29559876/

10-09 18:33