Как зациклить многомерный массив в одной ячейке apache POI

У меня есть ячейка 13 строк x 31, импортированная из файла excel, а затем сохраняющая ее внутри arraylist, поэтому в основном это 2d-массив, подобный этому

[1,2,3,4,5.................]
[a,b,c,d,e.................]

а затем я конвертирую его в массив String [], как это

   String [] array = null;

      for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
            Row r = sheet.getRow(rowNum);

            ArrayList<String> dl = new ArrayList<String>();

            for (int i = 3; i < r.getLastCellNum() + 1; i = i + 3) {
                Cell cell = r.getCell(i);
                val = formatter.formatCellValue(cell);
                dl.add(val);

                array = dl.toArray(new String[dl.size()]);

            }
            // send array as parameter to another method inside the same class
            WriteNewFile(array);
            break;
        }

в другом методе создания нового файла Excel я должен зациклить массив, чем содержать данные, такие как данные массива выше.

 for (int x= 0; x<= total - 1; x++) {
        Row row3 = sheet.getRow( x+ 2);
        Cell cell1 = row3.createCell(3);
        cell1.setCellValue(array[x]);
    }

когда я запускаю этот код, я получаю такое сообщение об ошибке:

java.lang.ArrayIndexOutOfBoundsException: 32

цель моего кода - напечатать массив в одной ячейке и зациклить строку до итога-1.

общая стоимость 396

ОБНОВЛЕНО

 for (int x= 0; x< array.length; x++) {
        Row row3 = sheet.getRow( x+ 2);
        Cell cell1 = row3.createCell(3);
        cell1.setCellValue(array[x]);
    }

петля для java.lang.ArrayIndexOutOfBoundsException: 32 была решена.

возвращаясь к основному вопросу, теперь я могу распечатать только первую строку

[1,2,3,4,5.................] //of this row

как перейти к следующему ряду? Мне лучше преобразовать его в 1d массив?

ОБНОВЛЕНО

теперь, после получения массива в качестве параметра, отправляемого другим методом в метод writeNewFile (задача метода writeNewFile - записать новый файл Excel с использованием apache poi данных массива), и я могу записать данные следующим образом:

|test|
  1
  2
  3
  4
  5
  6

предположительно я хочу зациклить массив, чтобы продолжить цикл для следующей строки, подобной этой

|test|
  1
  2
  3
  4
  5
  6
  a
  b
  b
  d
  e

когда x равен total -1 в соответствии с вашим циклом, тогда x + 2, очевидно, превысит это значение

Scary Wombat 29.10.2018 01:07

@ScaryWombat, пожалуйста, обратитесь к моему обновлению

sharky 29.10.2018 01:46

такая же проблема будет существовать

Scary Wombat 29.10.2018 01:47

Как вы думаете, где у вас есть 2D-массив? Я вижу только String [] array, который не является 2D. И вы вызываете WriteNewFile(array); для каждой строки, имеющей array как одномерный массив строк. Нам нужно знать, что делает WriteNewFile, чтобы определить, какую строку он пишет. Кстати: WriteNewFile не должно быть названием метода. Имена методов должны начинаться с нижнего регистра writeNewFile. Имена, начинающиеся с верхнего регистра, являются именами классов.

Axel Richter 29.10.2018 05:41

@AxelRichter Мне очень жаль. Я новичок в мире программирования. Я считаю, что мои данные Arraylist - это 13 строк на 31 ячейку. массив = dl.toArray (новая строка [dl.size ()]); я пытался преобразовать из Arraylist в массив, потому что мне нужно записывать все данные из массива, который имеет многострочный массив, в одну ячейку при циклическом цикле строки в соответствии с данными, содержащимися внутри массива

sharky 30.10.2018 09:45

@AxelRichter в настоящее время я могу записывать данные только в первую строку массива, но я не могу продолжить следующую строку массива. спасибо, что сказали мне название метода, кстати

sharky 30.10.2018 09:47

Ваш String [] array может содержать только одну строку данных. И тот, кто написал ваш код, похоже, знал это, поскольку WriteNewFile(array) вызывается для каждой отдельной строки. Итак, нам нужно знать, что делает WriteNewFile, чтобы иметь возможность помочь.

Axel Richter 30.10.2018 09:54

@AxelRichter смотри мое последнее обновление. Надеюсь, это поможет тебе

sharky 30.10.2018 10:09

Нам понадобится код метода WriteNewFile.

Axel Richter 30.10.2018 10:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
40
0

Другие вопросы по теме