我正在从程序中获取值,我想将它们保存在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();
}
请先告诉我什么是丢失的还是错误的
答案 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]);
}
}