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

如何使用apache-poi水平合并单元格

郝峰
2023-03-14

我要做一个垂直合并使用这个函数:

private static void mergeCellsVertically(XWPFTable table, int col, int      fromRow, int toRow) {
    for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
        XWPFTableCell cell = table.getRow(rowIndex).getCell(col);
        if ( rowIndex == fromRow ) {
            // The first merged cell is set with RESTART merge value
                cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
        } else {
            // Cells which join (merge) the first one, are set with CONTINUE
            cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
        }
    }
}

但我不能用类似的函数进行水平合并:

private static void mergeCellsHorizontally(XWPFTable table, int col, int fromCol, int toCol) {

    for (int colIndex = fromCol; colIndex <= toCol; colIndex++) {

        XWPFTableCell cell = table.getRow(0).getCell(colIndex);

        if ( colIndex == fromCol ) {
            // The first merged cell is set with RESTART merge value
            cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
            cell.setText("hola");
        } else {
            // Cells which join (merge) the first one, are set with CONTINUE
            cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
            cell.setText("adios");
        }
    }
}

谢谢!

共有1个答案

孟成文
2023-03-14
  setCellSpan(row.getCell(2), 5);
   CTRow ctRow = row.getCtRow(); 
    CTTc[] ctTcs = new CTTc[4]; // las colunas que quedan
    for(int y = 0; y < ctRow.sizeOfTcArray(); y++) { 
       if(y != 4 && y != 5  && y != 6 && y != 7){ //Las columnas que desaparecen
    ctTcs[y] = ctRow.getTcArray(y);
} }ctRow.setTcArray(ctTcs);  

在哪里:

public static void setCellSpan(XWPFTableCell cell, int span) {
    if (cell.getCTTc().getTcPr() == null) {
        cell.getCTTc().addNewTcPr();
    }
    if (cell.getCTTc().getTcPr().getGridSpan() == null) {
        cell.getCTTc().getTcPr().addNewGridSpan();
    }
    cell.getCTTc().getTcPr().getGridSpan().setVal(BigInteger.valueOf((long) span));
}
 类似资料:
  • 我想水平合并XWPFTable中的行的列。我在这个环节试了一下答案。如何合并单元格(或应用colspan)使用XWPFTable在POIJava?以及这个链接如何使用apache-poi水平合并单元格 它帮助我使细胞垂直合并。但横向合并并没有发生。我附上了我真正想要的样本截图。 谢谢

  • 问题内容: 还有其他方法可以使用Apache POI库在Excel中合并单元格? 我正在尝试使用以下内容,但无法正常工作 问题答案: 您可以使用 该示例将从B2合并到E2。请记住,它是基于零的索引(例如POI版本3.12)。 有关详细信息,请参见《BusyDeveloper指南》。

  • 我试着用下面的方法,但它不起作用

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

  • 在旧版本中,您可以键入以下内容: 这会产生外部边框--即使是在合并的单元格周围,也会使用选定的颜色。不幸的是,在POI的新版本中,我似乎不能使用索引颜色,因为获得自定义RGB颜色索引的方法不起作用,并且被降级或标记为仅供测试。

  • 我想数一下一行中有多少单元格被合并了?我在Excel中合并(缩放)它,在Java中我想显示例如:“合并的单元格:4”(A1,B1,C1,D1)?