javaapache poi(第 1 部分)

java apache poi (part 1)

只需在第一个 之前创建一个 List 变量列表,在每次迭代开始时创建一个新的 List,将元素放入此列表并将此列表添加到迭代结束时的主列表列表。你应该得到这样的东西:

...

List<List<String>> records = new ArrayList<List<String>>();

while(rowIterator.hasNext()){
    List<String> record = new ArrayList<String>();

    row = (XSSFRow)rowIterator.next();

    Iterator<Cell> cellIterator = row.cellIterator();

    while(cellIterator.hasNext()){
        cell = cellIterator.next();
        cell.setCellType(Cell.CELL_TYPE_STRING);

        switch(cell.getCellType()){
            case Cell.CELL_TYPE_STRING:
                record.add(cell.getStringCellValue());
                break;
            case Cell.CELL_TYPE_NUMERIC:
                record.add(Double.toString(cell.getNumericCellValue()));
                break;
        }
    }

    records.add(record);
}

for (List<String> record : records) {
    for (String s : record) {
        System.out.print(" " + s);
    }

    System.out.println();
}

...

另请注意,您不需要添加 |符号了,所以最终不需要拆分。但通常要拆分字符串,有一个方法 String#split() 接受正则表达式。你需要像那样使用它来分割“|” (你需要把 \ 放在 | 之前,因为它是一个特殊的正则表达式字符):

for (String record : records) {
    System.out.println(record);

    String[] elements = record.split("\|");
    for (String element : elements) {
        System.out.println(" -> " + element);
    }
}

这里我所做的是删除管道符号并将其添加到数组列表中。 希望对你有帮助。

FileInputStream inputFile = new FileInputStream("staff.xls");
XSSFWorkbook workbook = new XSSFWorkbook(inputFile);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
XSSFRow row;
Cell cell;

List<String> l2 = new LinkedList<String>();
Iterator<Row> rowIterator = spreadsheet.iterator();

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

    Iterator<Cell> cellIterator = row.cellIterator();

    while(cellIterator.hasNext()){
            cell = cellIterator.next();
            cell.setCellType(Cell.CELL_TYPE_STRING); 

            switch(cell.getCellType()){
            case Cell.CELL_TYPE_STRING:

            l2.add(cell.getStringCellValue());

                break;
            case Cell.CELL_TYPE_NUMERIC:

                l1.add((int) cell.getNumericCellValue());
                System.out.println(l1);
                break;
            }
        }
    }

    System.out.println(l2);
}
}