【问题标题】:Appending sheet to existing excel file using Java and Apache POI使用 Java 和 Apache POI 将工作表附加到现有的 excel 文件
【发布时间】:2016-05-23 05:45:13
【问题描述】:

我有一个 Java 方法 writeToExcel(String sheetName, Map),它在一个新的 excel 文件中创建一个名为“sheetName”的新工作表,并将地图数据写入其中。当我多次调用具有不同 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();
    }
}

【问题讨论】:

  • 发布提供MCVE。请务必将您的代码复制粘贴到新项目,并确保在将其发布到此处之前编译并运行。

标签: java excel apache-poi


【解决方案1】:

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

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

这应该可以解决问题。

【讨论】:

    【解决方案2】:

    XSSFWorkbook 工作簿=新 XSSFWorkbook(new File(filePath)); => XSSFWorkbook 工作簿=新 XSSFWorkbook(filePath);作为 XSSFWorkbook 的不适合构造函数 workbook=new XSSFWorkbook(new File(filePath))

    【讨论】:

    • 欢迎来到 Stackoverflow。请编辑您的答案以格式化您的代码。它现在无法阅读。您是否也可以考虑扩展您的答案?它可以帮助询问者和其他成员更好地理解您的解决方案,提供获取它的背景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多