如何在单细胞apache POI中循环多维数组

时间:2018-10-29 00:04:35

标签: java apache-poi

我有一个从Excel文件导入的13行x 31单元格,然后将其存储在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

如何继续下一行?我最好将其转换为一维数组吗?

已更新

现在接收到该数组作为参数后,通过其他方法发送给writeNewFile方法(writeNewFile方法的唯一任务是使用数组数据的apache poi写入新的excel文件),我可以这样写数据:

|test|
  1
  2
  3
  4
  5
  6

据说我想循环数组,像这样下一行继续循环

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

0 个答案:

没有答案