Чтение Excel в Java - как упростить - PullRequest
0 голосов
/ 24 декабря 2018

Я написал код, который я нахожу немного сложным и как новичок, ищущий более простое решение.У меня есть таблица Excel с 6 столбцами и 170 строк.Моя идея состояла в том, чтобы читать ячейку за ячейкой и сохранять все ячейки в один список.

List<String> lista = new ArrayList<String>();                       
        sh.forEach(row -> {                                             
                row.forEach(cell -> {                                       
                String cellvalue = dataFormatter.formatCellValue(cell);     
                lista.add(cellvalue);
                System.out.println(cellvalue);
            }); });
        workbook.close();    

После этого, перебирая этот список и сохраняя ячейки в 6 списках по номерам от одного до шести.Как я это сделал:

 ArrayList<String> lista1 = new ArrayList<String>();
        ArrayList<String> lista2 = new ArrayList<String>();
        ArrayList<String> lista3 = new ArrayList<String>();
        ArrayList<String> lista4 = new ArrayList<String>();
        ArrayList<String> lista5 = new ArrayList<String>();
        ArrayList<String> lista6 = new ArrayList<String>();

        @SuppressWarnings("unchecked")
        ArrayList<String>[] liste = new ArrayList[]{lista1, lista2, lista3, lista4, lista5, lista6};

        for (int i = 6 ; i < lista.size(); i ++ ){                                                                  // i = 6  --->  preskoči prvi red
              liste[i % 6].add(lista.get(i)); }     //liste[i % 6] = liste[1] = liste[2] = liste[3] = liste[4], etc
        jdbcTemplate.batchUpdate("INSERT INTO INS_RAZNO.ZAPOSLENICI_TEST VALUES (?, ?, ?, ?, ?, ?)", new BatchPreparedStatementSetter() {
            @Override                                   
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                ps.setString(1, lista1.get(i));
                ps.setString(2, lista2.get(i));         
                ps.setString(3, lista3.get(i));     
                ps.setString(4, lista4.get(i));         //ćelije koje sadržavaju brojeve mogu se prenositi kao stringovi u NUMBER polje
                ps.setString(5, lista5.get(i));         //ćelije koje sadržavaju slova ne mogu se prenositi u NUMBER polje
                ps.setString(6, lista6.get(i));    
            }

Я использовал

 liste[i % 6].add(lista.get(i));

Итак, итерируя по основному списку, я получаю 'i% 6' и этим значением сохраняю liste [i] вкаждый список.

Я думаю о том, как сделать это решение более простым.И этим можно добавить метод получения и установки, но для меня трудно понять, что я должен связать с получением и установкой.Это только моя мысль.Если у вас есть другая идея, пожалуйста, поделитесь со мной.Спасибо.

1 Ответ

0 голосов
/ 24 декабря 2018

Вместо использования List из String создайте класс модели Java, содержащий свойства, соответствующие каждому столбцу.Затем перебирая каждую строку в Excel, создайте экземпляр, представляющий эту строку, и добавьте его в List объектов вашей модели.

Чтобы разбить его -

  • Каждая строка представляет объект, то есть класс вашей модели.
  • Столбцы каждой строки являются свойствами этого модельного класса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...