当前位置: 首页 > 知识库问答 >
问题:

每次循环运行时,我如何在同一个Excelbook但不同的工作表中写入?XSSF Apache POI

欧阳晗日
2023-03-14

当我使用下面的方法时,它将在excelsheet中打印数组列表。当我在一个循环中调用这个方法时,第二次迭代在同一个工作表中打印。我想在不同的工作表中打印下一个迭代,可能创建一个新的工作表并在那里书写。我需要做什么样的改变才能在同一个excel工作簿的不同工作表中打印迭代?

for (int indexSelect=1;indexSelect>=10; indexSelect++){
excelWrite(Prints, indexSelect)
}


public static void excelWrite(ArrayList<Object> Prints, int indexSelect) {
        XSSFWorkbook workbook = new XSSFWorkbook();

        XSSFSheet sheet = workbook.createSheet("Achievers"+indexSelect);
        System.out.println("Getting sheet at ..:" +indexSelect);
        //Sheet sheet = workbook.getSheetAt(indexSelect);
        int rowCount = 0;

        //  for (Object Names : Prints) {
        //      org.apache.poi.ss.usermodel.Row row = sheet.createRow(++rowCount);
        //org.apache.poi.ss.usermodel.Row row = sheet.createRow(rowCount);
        int columnCount = indexSelect;

        for (Object field :Prints) {
            org.apache.poi.ss.usermodel.Row row = sheet.createRow(++rowCount);
            Cell cell = row.createCell(columnCount);
            if (field instanceof String) {
                cell.setCellValue((String) field);
            } else if (field instanceof Integer) {
                cell.setCellValue((Integer) field);
            }
        }

        //  }
        System.out.println("Current indexSelect is: "+indexSelect);

        try {
            FileOutputStream outputStream = new FileOutputStream("C:\\Softwares\\DataSource\\AchieversDataCopy.xlsx") ;

            workbook.write(outputStream);
            workbook.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

}

共有1个答案

濮阳茂材
2023-03-14

只需从ExcelWrite方法中创建和保存工作簿:

XSSFWorkbook workbook = new XSSFWorkbook();

for (int indexSelect=1;indexSelect>=10; indexSelect++){
    excelWrite(workbook, Prints, indexSelect)
}
try {
    FileOutputStream outputStream = new FileOutputStream("C:\\Softwares\\DataSource\\AchieversDataCopy.xlsx") ;
    workbook.write(outputStream);
    workbook.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}


public static void excelWrite(XSSFWorkbook workbook, ArrayList<Object> Prints, int indexSelect) {

    XSSFSheet sheet = workbook.createSheet("Achievers"+indexSelect);
    System.out.println("Getting sheet at ..:" +indexSelect);
    int rowCount = 0;

    int columnCount = indexSelect;

    for (Object field :Prints) {
        Row row = sheet.createRow(++rowCount);
        Cell cell = row.createCell(columnCount);
        if (field instanceof String) {
            cell.setCellValue((String) field);
        } else if (field instanceof Integer) {
            cell.setCellValue((Integer) field);
        }
    }

    System.out.println("Current indexSelect is: "+indexSelect);
}
 类似资料:
  • 我有一个工作,需要执行两次每天在不同的时间。例如10:00和15:30。我怎样才能做到这一点?

  • 问题内容: 和别的: 两者都不起作用(强制关闭应用程序)。我可以尝试其他哪些选择? 问题答案: 您的代码失败,因为您在后台线程中执行睡眠,但是显示数据必须在UI线程中执行。 您必须从runOnUiThread(Runnable)运行displayData或定义处理程序并将消息发送给它。 例如:

  • 我试图制作一个简单的程序,要求输入一个整数,如果该整数是质数,则输出其因子。如果用户的输入不是主因子,它会要求用户输入主因子。问题是,如果我在一行中输入两次有效的素数因子,它不会给出正确的输出。我已经在这方面工作了一段时间了,我想这一定是我明显缺少的东西,因为我无法理解它。 您好,请输入一个整数:64 64有系数:32、16、8、4、2、1请输入另一个整数:y 请输入有效的基本因子: 现在如果我在

  • 问题内容: 使用此代码,我无法多次运行插入查询。它仅询问ID和名称一次(如果counter中的值大于1)。 让我借助一个示例进行说明:- 假设我将值2放入。这样,它应该询问我两次ID和名称,但只询问一次,然后它将我为ID和名称输入的值复制到表中两次。 我怎样才能解决这个问题?如果不能,请提出替代代码,以解决我的问题。 问题答案: 当PL / SQL块被编译时( 而不是 正在执行中),替换变量和分别

  • 我有一个函数,使API调用服务器和更新用户界面与新数据。我想使,使每30秒我使API调用不同的url每次?这些API调用应该是不间断的,只要应用程序正在运行。

  • 我在页面上有一个表,我需要从表中的特定单元格中读取值。我想把这些值写到excel文件中。问题是for loop只循环一次,并且只为Excel中的第一个单元格写入值。我试过很多不同的循环,在谷歌上搜索,但都找不到答案。请帮帮忙。下面是我要编写到Excel的代码: 这是我写入excel文件的地方 循环成功执行并从表中正确打印出值,但我需要将这些值写入Excel。似乎在excel中写入第一个值后,for