2 回答

TA貢獻1836條經驗 獲得超5個贊
你需要改變你的代碼如下
public static void main(String[] args) {
try {
final FileInputStream file =
new FileInputStream(new File("xxx"));
final XSSFWorkbook wb = new XSSFWorkbook(file);
final XSSFSheet sheet = wb.getSheetAt(0);
final DataFormatter formatter = new DataFormatter();
final ArrayList<ArrayList<String>> mainArrayList = new ArrayList<ArrayList<String>>();
for (int rowNum = 0; rowNum < sheet.getLastRowNum() + 1; rowNum++) {
String val = null;
final ArrayList<String> al = new ArrayList<String>();
final Row r = sheet.getRow(rowNum);
for (int i = 0; i < r.getLastCellNum(); i++) {
final Cell cell = r.getCell(i);
val = formatter.formatCellValue(cell);
al.add(val);
mainArrayList.add(al);
}
}
System.out.print(mainArrayList);
} catch (final Exception e) {
e.printStackTrace();
}
}

TA貢獻1788條經驗 獲得超4個贊
首先你需要ArrayList<String> al = new ArrayList<String>();進入for (int rowNum = 0; rowNum < sheet.getLastRowNum() + 1; rowNum++) {}. al現在需要在每個循環中都是新的。
其次,您需要al.add(val);進入for (int i = 0; i < r.getLastCellNum() + 1; i++) {}. 因為在循環中, theval是正確的值。
ArrayList<String> al = new ArrayList<String>();
for (int rowNum = 0; rowNum < sheet.getLastRowNum() + 1; rowNum++) {
String val = null;
Row r = sheet.getRow(rowNum);
for (int i = 0; i < r.getLastCellNum() + 1; i++) {
Cell cell = r.getCell(i);
val = formatter.formatCellValue(cell);
}
al.add(val);
mainArrayList.add(al);
}
改成這個
for (int rowNum = 0; rowNum < sheet.getLastRowNum() + 1; rowNum++) {
ArrayList<String> al = new ArrayList<String>();
String val = null;
Row r = sheet.getRow(rowNum);
for (int i = 0; i < r.getLastCellNum() + 1; i++) {
Cell cell = r.getCell(i);
val = formatter.formatCellValue(cell);
al.add(val);
}
mainArrayList.add(al);
}
添加回答
舉報