只读excel表格中的几列

我正在写一个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()); } }