彩票走势图

国产Word格式处理控件Spire.Doc功能演示:在Java中合并Word单元格时删除重复值

原创|使用教程|编辑:张莹心|2021-11-01 11:01:43.203|阅读 673 次

概述:Spire.Doc 提供Table.applyVerticalMerge()方法垂直合并表格单元格和 Table.applyHorizo​​ntalMerge() 方法水平合并表格单元格。默认情况下,如果要合并的单元格包含相同的值,则合并的单元格将具有重复的值。本文将演示如何使用Spire.Doc for Java的自定义方法删除合并单元格中的重复值。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Spire.Doc for Java 是一款专业的Java Word组件,开发人员使用它可以轻松地将Word文档创建、读取、编辑、转换和打印等功能集成到自己的Java应用程序中。

Spire.Doc 提供Table.applyVerticalMerge()方法垂直合并表格单元格和 Table.applyHorizontalMerge() 方法水平合并表格单元格。默认情况下,如果要合并的单元格包含相同的值,则合并的单元格将具有重复的值。本文将演示如何使用Spire.Doc for Java的自定义方法删除合并单元格中的重复值。

>>可点击此处下载最新版测试。

为 Java 安装 Spire.Doc

首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。

合并单元格时删除重复值

以下是删除 Word 表格中合并单元格中重复值的步骤。
  • 创建Document类的对象并使用Document.loadFromFile()方法加载示例文档。
  • 使用Document.getSections()方法获取节集合,然后使用SectionCollection.get()方法获取特定节。
  • 使用Section.getTables()方法获取表集合,然后使用TableCollection.get()方法获取想要的表
  • 调用mergeCell(Table table, boolean isHorizontalMerge, int index, int start, int end)方法来垂直或水平合并表格单元格。此方法会判断要合并的单元格是否具有相同的值,并且将在合并单元格中仅保留一个值。
  • 使用Document.saveToFile()方法将文档保存到文件。
import com.spire.doc.*;
import com.spire.doc.interfaces.ITable;

    public class MergeCells {
    public static void main(String[] args) throws Exception {

        //Create an object of Document class and load the sample document.
        Document document = new Document();
        document.loadFromFile("Sample.docx");

        //Get the first section
        Section section = document.getSections().get(0);

        //Get the first table
        Table table = section.getTables().get(0);

        //Invoike mergeCell()method to merge cells vertically
        mergeCell(table, false, 0, 1, 3);

        //Invoike mergeCell()method to merge cell horizontally
        mergeCell(table, true, 0, 4, 5);

        //Save the document to file
        document.saveToFile("MergeTable.docx",FileFormat.Docx_2013);
}

        //Customize a mergeCell() method to remove the duplicate values while merging cells
        public static void mergeCell(Table table, boolean isHorizontalMerge, int index, int start, int end) {
        
        if (isHorizontalMerge) {
            //Get a cell from table
            TableCell firstCell = table.get(index, start);
            //Invoke getCellText() method to get the cell’s text
            String firstCellText = getCellText(firstCell);
            for (int i = start + 1; i <= end; i++) {
                TableCell cell1 = table.get(index, i);
                //Check if the text is the same as the first cell                
        if (firstCellText.equals(getCellText(cell1))) {
                    //If yes, clear all the paragraphs in the cell
                    cell1.getParagraphs().clear();
                }
            }
            //Merge cells horizontally
            table.applyHorizontalMerge(index, start, end);

        } 
            else {
            TableCell firstCell = table.get(start, index);
            String firstCellText = getCellText(firstCell);
            for (int i = start + 1; i <= end; i++) {
                TableCell cell1 = table.get(i, index);
                if (firstCellText.equals(getCellText(cell1))) {
                    cell1.getParagraphs().clear();
                }
            }
            //Merge cells vertically
            table.applyVerticalMerge(index, start, end);
        }
    }
        public static String getCellText(TableCell cell) {

        StringBuilder text = new StringBuilder();
        //Traverse all the paragraphs of a cell
        for (int i = 0; i < cell.getParagraphs().getCount(); i++) {
            //Get every paragraph’s text and append it to StringBuilder
            text.append(cell.getParagraphs().get(i).getText().trim());
        }
        return text.toString();
    }
}
国产Word格式处理控件Spire.Doc功能演示:在Java中合并Word单元格时删除重复值
整合所有格式API处理套包Spire.office for Java正在慧都网火热销售中!立马1分钟了解全部咨询!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP