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

使用Java和Apache POI在现有excel文件中添加工作表

仲阳朔
2023-03-14

我有一个Java方法writeToExcel(String sheetName,Map),它在一个新的excel文件中创建一个名为'sheet name'的新工作表,并将地图数据写入其中。当我使用不同的sheetName参数多次调用该方法时,现有的工作表将被上次调用的工作表替换。我希望每次使用不同的sheetName参数调用该方法时,都在同一个excel文件中创建新的工作表,而不会丢失现有的工作表。这是我的代码。

public static void writeToExcel(String fileName,Map<Integer,String[]> excelData){
    String filePath="/Data/excel.xlsx";
    XSSFWorkbook workbook=new XSSFWorkbook();
    XSSFSheet sheet=workbook.createSheet(fileName);
    Set<Integer> keySet=excelData.keySet();
    int passedCount=0;
    int failedCount=0;
    int rowNo=0;
    int cellNo=0;
    Row row;
    Cell cell;
    try{
        File file=new File(filePath);
        FileOutputStream output=new FileOutputStream(file);
        for(Integer key:keySet){
            row=sheet.createRow(rowNo++);
            String[] dataToWrite=excelData.get(key);
            cellNo=0;
            for(String str:dataToWrite){
                cell=row.createCell(cellNo++);
                cell.setCellValue(str);
            }
        }
        workbook.write(output);
        output.close();
        workbook.close();
    }
    catch(FileNotFoundException e){
        e.printStackTrace();
    }
    catch(IOException e){
        e.printStackTrace();
    }
}

共有1个答案

公良奇
2023-03-14

似乎总是在方法的第二行创建一个新工作簿。因此,替换的不是工作表,而是整个工作簿。更好地使用

XSSFWorkbook workbook=new XSSFWorkbook(new File(filePath));

应该能奏效。

 类似资料:
  • 我尝试了各种方式添加Excel电子表格。但问题总是相同的。 我尝试了这里提出的代码, 将工作表添加到现有excel文件 使用Apache POI for Java在现有Excel工作簿中创建新工作表 问题是:

  • 问题内容: 我想向现有的Excel文件中添加工作表。我怎样才能做到这一点?我正在研究一个selenium项目,我想将所有自动化结果表添加到单个excel文件中。现在,我能够为每个工作表创建新的Excel文件。 问题答案: 如果从Java 使用: 分别打开现有工作表或创建新工作表: 要检查工作表是否存在以创建唯一的工作表名称,可以使用如下所示的内容: 然后您可以通过调用添加工作表: 在这种情况下,工

  • 我想将工作表添加到现有的 excel 文件中。我该怎么做?我正在从事一个硒项目,我想将所有自动化结果表添加到单个 excel 文件中。现在,我可以为每个工作表创建新的Excel文件。

  • 我有一个要求,需要将数据验证添加到整个列中,而不是特定的单元格中。我查阅了ApachePOI的文档,发现了下面的示例 但是上面的例子为特定的单元格创建了一个下拉数据验证。在这种情况下,行0,列0。列中的其余单元格没有验证。但是在实际的excel文件中,我们可以这样做,所以这应该是可能的。我尝试并搜索了很多,但无法找到解决方案。请帮助...

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 我试图使用apache POI、使用primefaces和java在现有的excel工作簿中创建一个新的工作表,但是到目前为止还没有成功。谁能告诉我这是怎么做的吗?我可以做单张 下面的代码是我为在一个xls文件中创建多个工作表而编写的,我给出的条件是它没有大于65535的of行创建新工作表并迭代它,但它显示错误 警告:允许范围(0..65535)之外的无效行号(65536)java.lang.Il