[英]java apache poi (part 1)
Excel文件(staff.xls)
身份證名
1阿里
2阿布
3艾哈邁德
Java代碼
FileInputStream inputFile = new FileInputStream("staff.xls"); XSSFWorkbook workbook = new XSSFWorkbook(inputFile); XSSFSheet spreadsheet = workbook.getSheetAt(0); XSSFRow row; Cell cell; 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: System.out.print(cell.getStringCellValue()+"|"); break; case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue()+"|"); break; } } System.out.println(); }
我的問題是:
(1)如何將記錄放入數組或數組列表中?
(2)創建后,如何分割“ |”?
只需在第一個while之前創建List of List變量,在每次迭代的開始處創建一個新的List,將元素放入此列表,然后在迭代結束時將此列表添加到Lists的主列表中。 您應該得到類似的內容:
...
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.