亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將數據從excel存儲到ArrayList<ArrayList<String>>

如何將數據從excel存儲到ArrayList<ArrayList<String>>

瀟瀟雨雨 2021-12-22 16:49:02
我有這樣的 excel 數據111 | 222 | 333 | 444 | 555 | 66611  | 12  | 13  | 14  | 15  | 161   | 2   | 3   | 4   | 5   | 6a   | b   | c   | d   | e   | f我的代碼是這樣的public static void main(String[] args) {    try {        FileInputStream file = new FileInputStream(new File("xxx"));        XSSFWorkbook wb = new XSSFWorkbook(file);        XSSFSheet sheet = wb.getSheetAt(0);        DataFormatter formatter = new DataFormatter();        ArrayList<ArrayList<String>> mainArrayList = new ArrayList<ArrayList<String>>();        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);        }        System.out.print(mainArrayList);    } catch (    Exception e) {        e.printStackTrace();    }}輸出: [[, , , ], [, , , ], [, , , ], [, , , ]]我想要的結果是這樣的[[111, 222, 333, 444, 555, 666, ],[11, 12, 13, 14, 15, 16, ],[1, 2, 3, 4, 5, 6, ],[a, s, d, f, g, h, ]]我相信這是因為al.add(val);是,null但我不知道該怎么做才能將 val 添加到 arraylist al 中。幫助?
查看完整描述

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();

    }

  }


查看完整回答
反對 回復 2021-12-22
?
尚方寶劍之說

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);

    }


查看完整回答
反對 回復 2021-12-22
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號