我使用的是Apache POI库,但我有一些我不想阅读的数据 - 所以我需要程序开始从特定行读取文件。
我想要来自第10行之后的单元格和行的所有数据,直到文档为空。我尝试过以下代码。
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet firstSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = firstSheet.iterator();
Row getSchool = firstSheet.getRow(10);
Iterator<Cell> cellIterator = getSchool.cellIterator();
while (iterator.hasNext())
{
while (cellIterator.hasNext())
{
...
}
}
但它只会从第10行的单元格中获取所有数据。
我期待着收到你的来信: - )。
答案 0 :(得分:8)
您只能从第11行获取数据:
Row getSchool = firstSheet.getRow(10);
的文档
返回基于0的逻辑行(非物理行)。 如果您要求未定义的行,则会得到null。这是为了 说第4行代表工作表上的第五行。
查看文档中有关如何Iterate over rows and cells。
的示例您可以使用以下内容:
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet firstSheet = workbook.getSheetAt(0);
for (Row row : firstSheet) {
for (Cell cell : row) {
// Do something here
}
}
如果要遍历行中的所有单元格,请检查Iterate over cells, with control of missing / blank cells的方法。
CellIterator
只返回文件中定义的单元格,主要是那些带有值或样式的单元格,但它取决于Excel。
您可以将Row.MissingCellPolicy指定为:
Row.getCell(int, MissingCellPolicy)
以下是一个例子:
int lastColumn = Math.max(row.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT);
for (int cn = 0; cn < lastColumn; cn++) {
Cell c = row.getCell(cn, Row.RETURN_BLANK_AS_NULL);
if (c == null) {
// The spreadsheet is empty in this cell
} else {
// Do something useful with the cell's contents
}
}
答案 1 :(得分:0)
请参阅以下内容:
String fileName = "D:\\TestScripts.xls"; // file
POIFSFileSystem fileSystem = new POIFSFileSystem(new FileInputStream(fileName));
HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
// HSSFSheet sheet = workbook.getSheetAt(0); //Get first Excel Sheet
HSSFSheet sheet = workbook.getSheet("SheetName"); //Get data as per sheet name
for (Row row : sheet) { // For each Row.
Cell cell = row.getCell(0); // Get the Cell at the Index / Column you want.
if(cell.getStringCellValue().equalsIgnoreCase("test")) {
System.out.println(cell.getRow().getLastCellNum());
for(int i=0;i<=cell.getRow().getLastCellNum()-1;i++) {
System.out.println(cell.getRow().getCell(i));
}
}
}
如果您不查找任何特定的列数据,请删除以下条件
if(cell.getStringCellValue().equalsIgnoreCase("test"))