在带有Poi库的Java Excel工作表中写入值的问题

时间:2018-07-02 17:54:15

标签: java excel apache-poi

我正在从程序中获取值,我想将它们保存在Excel文件中,我正在使用poi库,我应该有9张纸,并且每张纸我都必须在我的矩阵中获得一个矩阵(行*列)大小写(无论行数* 13列),但是我只能获得1个以数组中的姓氏命名且仅由13列填充的工作表。

这是方法

public static void writeExcelSheet(String categoryName) throws IOException {
    Workbook workbook=new HSSFWorkbook();
    Sheet sheet=workbook.createSheet(categoryName);
    int allength=arraylistCategory.size();

    for(int row=0;row<allength;row++){
        for(int column=0;column<13;column++){
             Cell cell=sheet.createRow(row).createCell(column);
             cell.setCellValue(arraylistCategory.get(row)[column]);
        }
    }

        FileOutputStream outputStream=new FileOutputStream("mel coef excel sheet.xls");
        workbook.write(outputStream);
        outputStream.close();



    arraylistCategory.clear();
}

请先告诉我什么是丢失的还是错误的

1 个答案:

答案 0 :(得分:3)

  

我应该有9张纸

您的方法仅在工作簿中创建一张工作表。假设您尝试调用此方法9次,则每次调用此方法都将重新创建一个新的空白Workbook,并且每次都覆盖该文件。这说明了为什么只在数组中获得姓氏。

相反,只需创建一次Workbook,然后将其传递给此方法,以便您可以在同一Workbook上创建图纸。然后,在最后一次调用此方法之后,将其写入FileOutputStream

  

,仅由第13列填充

您在这里也遇到类似的问题。您正在为每一列创建带有createRow(row)的行。执行此操作时,将用新的空Row覆盖那里的任何行,从而擦除除最后一个值以外的所有单元格值。在内部Row循环外部但在外部for循环内部创建for,并在内部for循环内部使用它。

for(int row = 0; row < allength; row++){
    Row currentRow = sheet.createRow(row);
    for(int column = 0; column < 13; column++){
         Cell cell = currentRow.createCell(column);
         cell.setCellValue(arraylistCategory.get(row)[column]);
    }
}