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

在excel Java中合并具有相同值的单元格

董和泽
2023-03-14

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

我想遵循这个算法:

  • 在字段“ordre”中循环
  • 如果单元格(i)=单元格(i1)
  • 而不是合并它们

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

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);
  }
}

任何建议都将不胜感激

共有2个答案

辛承
2023-03-14

我有一个类似的要求,我的第一列有重复的值。我尝试了下面的代码,效果很好。这里,我根据第一列中的值合并行。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;
    }
南门鸿畴
2023-03-14

使用

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()方法将用于检查内容是否相等。

 类似资料:
  • 这应该返回3,因为如果我将从单元格(2,1)开始,我将通过上下左右移动得到39,39,39,我的方法看起来像find_cells(int[][]矩阵,int行,int col),其中row和col是起点。不要使用任何帮助器方法。我得到1可能是因为我将邻居标记为true,下次当我试图访问它们时,它会跳过它们。很抱歉缩进了。

  • 我有一个示例数据集,如下所示 Col1 Col2 Col3 A 1,2,3 A123 A 4,5 A456 A 1,2,3 A456 A 4,5 A123 我参考了一些解决方案,并尝试了以下方法。但它只追加单个列。

  • 我有一个. xlsx格式的Excel文件。我通过合并单元格以形成各种列来存储数据。我正在通过JavaWeb应用程序读取Excel文件并将其数据保存到数据库(MySQL)。但是当我从合并的单元格中读取时,我会得到空值以及存储在列和标题中的内容。我使用Apache POI。我的代码是: 我在网上搜索了答案,但没有找到任何相关的。

  • 我有两个哈希要合并。它们看起来像这样: 第二个散列看起来像: 我想合并这两个散列数组,结果如下所示: 有没有一种简单的方法来合并这两个哈希,或者我必须逐个遍历哈希并在另一个哈希中找到该键?

  • 问题内容: 我正在尝试将具有相同ID但具有不同列值的不同行合并为一个。 例如 : 我希望将其结合起来,这样结果是: 或者 或上述内容的任何其他变体,以使行以某种方式连接在一起。 任何帮助,将不胜感激!提前致谢。 问题答案: 请先阅读我的评论-除非仅用于报告目的,否则您甚至都不要考虑这样做,并且您想了解如何在普通SQL中做到这一点(而不是使用报告的正确解决方案)工具)。 第二种格式最简单,特别是如果

  • 这是我第一次在这里发帖,所以请直接回答我的问题,我会尽我所能解释我的问题。 我的工作簿中有两个工作表,其中工作表1直观地表示一个有162个方格的托盘中多个单位(A1到A162)的位置。并不是所有的方格都被填满,因为有些方格是空的。 现在,第2页显示了单位A1到A162的数值。我已经使用条件格式为每个值分配颜色。 我试图从sheet2将A1的颜色复制到sheet1中具有A1值的单元格,但没有成功。