java - 如何使用poi通过java取消合并单元格并获取xssf格式的数据

标签 java apache-poi

我有一个现有的 Excel 工作表,我正在尝试阅读它并将其放入我的列表中。但是,有合并的单元格,所以我想在将它存储在我的列表中之前取消合并。我尝试了 removeMergedRegion() 方法,但没有用。当我在这个过程之后打开 excel 表时,我希望单元格被取消合并。如果可能,在取消合并后应删除空单元格。

 public void newone(){
        //calling my existing excel file
        File file = new File("C:\\Users\\daisy\\Downloads\\What.xlsx");         
        FileInputStream fis;
        try {
            fis = new FileInputStream(file);
            Workbook workbook = new XSSFWorkbook(fis); 
            // Iterate through all merged region in the sheet
            Sheet sheet = workbook.getSheet("Sheet1");      
                for(int i=0; i < sheet.getNumMergedRegions(); i++)
                {
                    // Delete the region
                    sheet.removeMergedRegion(i);
                    System.out.println("Unmerged successfully");
                }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }          
    }

最佳答案

我认为问题在于,您的更改仅在内存中完成,并未保存。您需要保存修改后的工作表。为了演示我从另一个问题中借用了代码 Save Excel document Apache POI

try {
    FileOutputStream out = new FileOutputStream("C:\\Users\\...\\New.xlsx");
    workbook.write(out);
    out.close();
} catch (FileNotFoundException ex) {
    // handle the exception here
}

题外话 - 我强烈建议您不要使用 catch(e) { e.printStackTrace(); 吞下异常}。有很多文章解释了为什么这是一种不好的做法。

关于java - 如何使用poi通过java取消合并单元格并获取xssf格式的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251554/

相关文章:

java - 需要有关在扫雷游戏中随机地雷的方法的帮助

java - Java Swing 的循环进度条不起作用

java - 激活 Bean 验证集成时出错 - Hibernate

java - 使用 Java POI API 将 PDF 文件插入 MSWord

java - 使用 java apache POI 写入 Excelsheet 时出现问题

java - Apache POI : How to format a column of cells?

java - GPS 坐标未正确存储在从 android 到 php 的数据库中

java - 从 public_html war 应用程序部署 Tomcat

java - 读取 Excel 数字单元格值,因为它们在 Java 中

java - 在 Apache Poi 中调用 trackAllColumnsForAutoSIizing 的内存影响是什么