我正在编写一个Java程序来使用apache poi读取Excel工作表(xlsx)。我能够遍历所有单元格并获得所有值。但是我无法获得特定的像元值,例如E10。有什么办法吗?
请参阅下面用于迭代单元格的代码。
package application; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadFromXLSX { public static void readXLSXFile() throws IOException { InputStream ExcelFileToRead = new FileInputStream("C:\\Test.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead); XSSFWorkbook test = new XSSFWorkbook(); XSSFSheet sheet = wb.getSheetAt(0); XSSFRow row; XSSFCell cell; Iterator rows = sheet.rowIterator(); while (rows.hasNext()) { row=(XSSFRow) rows.next(); Iterator cells = row.cellIterator(); while (cells.hasNext()) { cell=(XSSFCell) cells.next(); if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) { System.out.print(cell.getStringCellValue()+" "); } else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) { System.out.print(cell.getNumericCellValue()+" "); } else { } } System.out.println(); } } }
例如,要获得第一个工作表的E10:
wb.getSheetAt(0).getRow(9).getCell(4);
注意:因为索引是基于空值的,所以减去1。
您还可以使用此便捷方法将E映射到4。
wb.getSheetAt(0).getRow(9).getCell(CellReference.convertColStringToIndex("E"));