Apache poi 从java编写Excel

Apache poi 从java编写Excel,apache-poi,Apache Poi,我正在尝试编写一个函数,将其写入excel文件。该函数将在一个循环中被多次调用,每个循环都会在新行中写入内容 public static void ExcelImport (String SheetName, String NameExcel, String Oobj,Integer i ) { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.creat

我正在尝试编写一个函数,将其写入excel文件。该函数将在一个循环中被多次调用,每个循环都会在新行中写入内容

public static void ExcelImport (String SheetName, String NameExcel, String Oobj,Integer i )
    {

 HSSFWorkbook workbook = new HSSFWorkbook();
         
         HSSFSheet sheet = workbook.createSheet("SheetName");
        
         
            //create Row
            Row Row = sheet.createRow(i-1);
            
            //create column
            Cell Cell = Row.createCell(1);
            
            //write
             Cell.setCellValue(Oobj);    
    
            try 
            {
                //Write the workbook in file system
                FileOutputStream out = new FileOutputStream(new File("C:\\Users\\Name\\Desktop\\"  + NameExcel +  ".xls"));
                workbook.write(out);
                out.close();
                System.out.println(i);
            } 
            catch (Exception e)
            {
                e.printStackTrace();
            }
    }
这非常简单,我的目标是将字符串Oobj写入i行的第二列。但出于某种原因,它只写最后一次运行。例如,如果循环运行了6次,那么第2列第5行中只会写入一些内容。在第0行中没有Oobj,在第1行中没有Oobj1,在第2行中没有Oobj2等等。我在第5行中只得到了“Oobj5”


可能是因为每次创建的新工作表都会覆盖旧工作表吗?在这种情况下,如何在同一张表中写入?

“写入excel文件”不清楚

对于.xlsx文件:这是一个具有某种文件夹结构的zip容器,如果您了解该结构,您可以在其中执行任何操作

如果您想更改某些打开的Excel工作表的内容:有良好的COM适配器使用经验,请参阅

“可能是因为每次创建的新工作表都会覆盖旧工作表吗?”:不仅是工作表,甚至工作簿每次都是新创建的。“如何在同一工作表中书写?”:
HSSFWorkbook工作簿
对象必须位于该方法之外。例如,它可以是类成员。但是,编写工作簿也必须在该方法之外,因为
工作簿
在编写后关闭。它不仅有
createSheet
,而且还有
getSheet
方法。因此,首先尝试获取工作表,仅当它尚未出现时才创建新的工作表。