【问题标题】:Merge cells having the same value in excel Java在excel Java中合并具有相同值的单元格
【发布时间】:2015-06-25 10:41:31
【问题描述】:

我使用 POI API 从 Postgres 数据库生成了 excel 文档。 第一列“Ordre”有许多相同的值。 但是我想合并这些具有相同值的单元格。

我想遵循这个算法:

  • 遍历字段“ordre”
  • 如果 cell(i) = cell(i+1) 则设置条件
  • 比合并它们

但是我有一个条件问题,如何在 Java 中说 (cell(i) = cell(i+1)),我不希望它能给出一些令人满意的结果 我开始写这段代码:

for (i=3; i<= sheet1.getPhysicalNumberOfRows()  ; i++) {
  Cell cell = sheet1.getRow(i).getCell(0);

 if (sheet1.getRow(i).getCell(0).getStringCellValue() == sheet1.getRow(i+1).getCell(0).getStringCellValue())
  {
    CellRangeAddress cellRangeAddress = new CellRangeAddress(i,i+1,0,0);
    sheet1.addMergedRegion(cellRangeAddress);
  }
}

任何建议将不胜感激

【问题讨论】:

    标签: java excel apache-poi xssf


    【解决方案1】:

    使用

    sheet1.getRow(i).getCell(0).toString().equals(sheet1.getRow(i+1).getCell(0).toString()).
    

    例子:

     for (i=3; i<= sheet1.getPhysicalNumberOfRows()  ; i++) {
     Cell cell = sheet1.getRow(i).getCell(0);
    
      if (sheet1.getRow(i).getCell(0).toString().equals( sheet1.getRow(i+1).getCell(0).toString()))
      {
        CellRangeAddress cellRangeAddress = new CellRangeAddress(i,i+1,0,0);
        sheet1.addMergedRegion(cellRangeAddress);
      }
    }
    

    "==" 用于引用相等检查。 equals() 方法将用于检查内容是否相等。

    【讨论】:

    • 它可以工作,但它只合并第一行和第二行,第三行它允许它,即使它与其他连续行具有相同的数字
    【解决方案2】:

    我有一个类似的要求,我的第一列有重复值。我尝试了下面的代码,它工作正常。在这里,我根据第一列中的值合并行。 NON_REPTNG_COLS 是要合并的列数。您可以修改此方法以满足您的要求。

        int first = 1;
        int last = 1;
        int i = 1;
        while (i < spreadsheet.getPhysicalNumberOfRows()) {
            first = i;
            last = i;
            for (int j = i + 1; j < spreadsheet.getPhysicalNumberOfRows(); j++) {
                if (spreadsheet.getRow(i).getCell(0).toString()
                        .equals(spreadsheet.getRow(j).getCell(0).toString())) {
                    last = j;
                }
            }
    
            for (int k = 0; k < NON_REPTNG_COLS; k++) {
                CellRangeAddress cellRangeAddress = new CellRangeAddress(first,
                        last, k, k);
                spreadsheet.addMergedRegion(cellRangeAddress);
            }
            i = last + 1;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多