Java删除word合并单元格时的重复值
Spire.Doc提供了Table.applyVerticalMerge()方法来垂直合并word文档里面的表格单元格,Table.applyHorizontalMerge()方法来水平合并表格单元格。默认情况下,如果要合并的单元格包含相同的值,那么合并后的单元格会有重复的值。
【程序环境】
本次测试时,在程序中引入Spire.Doc for Java。可通过以下方法引用Spire.Doc.jar文件:
方法1:将Spire.Doc for Java下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的Spire.Doc.jar。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的jar文件添加引用至程序。
方法2:使用Maven进行安装,你可以通过在项目的pom.xml文件中添加以下代码,在你的应用程序中轻松导入该JAR文件。
1 <repositories>
2 <repository>
3 <id>com.e-iceblue</id>
4 <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
5 </repository>
6 </repositories>
7 <dependencies>
8 <dependency>
9 <groupId>e-iceblue</groupId>
10 <artifactId>spire.doc</artifactId>
11 <version>10.9.0</version>
12 </dependency>
13 </dependencies>
方法3:通过NuGet安装。可通过以下2种方法安装:
(1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“FreeSpire.Doc”,点击“安装”。等待程序安装完成。
(2)将以下内容复制到PM控制台安装。
Install-Package FreeSpire.Doc -Version 10.9.0
【删除合并单元格时的重复值】
- 创建一个Document实例,使用Document.loadFromFile()方法加载示例文档。
- 使用Document.getSections()方法获得节集合,然后使用SectionCollection.get()方法获得特定的节。
- 使用Section.getTables()方法获得表格集合,然后使用TableCollection.get()方法获得想要的表。
- 调用mergeCell(Table table,boolean isHorizontalMerge,int index,int start,int end)方法来垂直或水平地合并表格单元格。这个方法将确定要合并的单元格是否有相同的值,并在合并的单元格中只保留一个值。
- 使用Document.saveToFile()方法保存文件。
【代码示例】
1 import com.spire.doc.*;
2 import com.spire.doc.interfaces.ITable;
3
4 public class MergeCells {
5 public static void main(String[] args) throws Exception {
6
7 //Create an object of Document class and load the sample document.
8 Document document = new Document();
9 document.loadFromFile("Sample.docx");
10
11 //Get the first section
12 Section section = document.getSections().get(0);
13
14 //Get the first table
15 Table table = section.getTables().get(0);
16
17 //Invoike mergeCell()method to merge cells vertically
18 mergeCell(table, false, 0, 1, 3);
19
20 //Invoike mergeCell()method to merge cell horizontally
21 mergeCell(table, true, 0, 3, 4);
22
23 //Save the document to file
24 document.saveToFile("MergeTable.docx",FileFormat.Docx_2013);
25 }
26
27 //Customize a mergeCell() method to remove the duplicate values while merging cells
28 public static void mergeCell(Table table, boolean isHorizontalMerge, int index, int start, int end) {
29
30 if (isHorizontalMerge) {
31 //Get a cell from table
32 TableCell firstCell = table.get(index, start);
33 //Invoke getCellText() method to get the cell’s text
34 String firstCellText = getCellText(firstCell);
35 for (int i = start + 1; i <= end; i++) {
36 TableCell cell1 = table.get(index, i);
37 //Check if the text is the same as the first cell
38 if (firstCellText.equals(getCellText(cell1))) {
39 //If yes, clear all the paragraphs in the cell
40 cell1.getParagraphs().clear();
41 }
42 }
43 //Merge cells horizontally
44 table.applyHorizontalMerge(index, start, end);
45
46 }
47 else {
48 TableCell firstCell = table.get(start, index);
49 String firstCellText = getCellText(firstCell);
50 for (int i = start + 1; i <= end; i++) {
51 TableCell cell1 = table.get(i, index);
52 if (firstCellText.equals(getCellText(cell1))) {
53 cell1.getParagraphs().clear();
54 }
55 }
56 //Merge cells vertically
57 table.applyVerticalMerge(index, start, end);
58 }
59 }
60 public static String getCellText(TableCell cell) {
61
62 StringBuilder text = new StringBuilder();
63 //Traverse all the paragraphs of a cell
64 for (int i = 0; i < cell.getParagraphs().getCount(); i++) {
65 //Get every paragraph’s text and append it to StringBuilder
66 text.append(cell.getParagraphs().get(i).getText().trim());
67 }
68 return text.toString();
69 }
70 }
【效果图】
Java删除word合并单元格时的重复值的更多相关文章
- 20190407 Word合并单元格
很长一段时间没处理word合并单元格,又忘记了采取忽略错误的方式测试出相应单元格的行列坐标这种方式.真是浪费时间.以后再也不想为此在深夜熬命. 今晚算是和它杠上了,很想弄清楚合并单元格之后行列坐标重新 ...
- java使用freemarker模板导出word(带有合并单元格)文档
来自:https://blog.csdn.net/qq_33195578/article/details/73790283 前言:最近要做一个导出word功能,其实网上有很多的例子,但是我需要的是合并 ...
- java导出标题多行且合并单元格的EXCEL
场景:项目中遇到有需要导出Excel的需求,并且是多行标题且有合并单元格的,参考网上的文章,加上自己的理解,封装成了可自由扩展的导出工具 先上效果,再贴代码: 调用工具类进行导出: public st ...
- C# 获取Excel中的合并单元格
C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...
- NPOI操作EXCEL(五)——含合并单元格复杂表头的EXCEL解析
我们在第三篇文章中谈到了那些非常反人类的excel模板,博主为了养家糊口,也玩命做出了相应的解析方法... 我们先来看看第一类复杂表头: ...... 博主称这类excel模板为略复杂表头模板(蓝色部 ...
- NPOI扩展--判断指定单元格是否为合并单元格和输出该单元格的行列跨度(维度)
因工作需要用到跨合并单元格获取数据,所以写了个NPOI扩展类. 主要方法如下: 1.判断指定行/列索引(单元格)是否为合并单元格. 2.获取指定列索引的实际含有数据的单元格. 3.返回指定行/列索引的 ...
- poi 合并单元格、设置边框
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //创建一个样式 HSSFCellStyle sty ...
- apache poi合并单元格设置边框
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); //创建一个样式 HSSFCellStyle sty ...
- python-利用xlrd模块中读取有合并单元格的excel数据
前言 对于excel中有合并单元格的情况,合并的单元格只能取到第一个单元格的值,合并的单元格后面的单元格内容的值为空,针对这个情况,写了下面一段代码实现, 对单元格进行判断,如果是传入的索引是合并单元 ...
随机推荐
- GIS技术在医疗行业的应用:利用切片地图发布技术解决dmetrix数字病理切片在线浏览
最近一直在研究切片地图发布技术,解决各种矢量和栅格数据的切片地图制作和发布问题.这块的技术在土地评估和调查类公司中应用较多,因为他们经常需要使用各地地图,传统的文件管理方式很难适应工作现状,如果将各种 ...
- 基于ABP实现DDD--领域逻辑和应用逻辑
本文主要介绍了多应用层的问题,包括原因和实现.通过理解介绍了如何区分领域逻辑和应用逻辑,哪些是正确的实践,哪些是不推荐的或者错误的实践. 一.多应用层的问题 1.多应用层介绍 不知道你们是否会 ...
- 叫高二上一调?简要题解 (ACD)
A. 电压机制 题意转换为所有奇环的并排除掉所有偶环留下的边的个数 . 建出 DFS 树,然后只有返祖边可能构成环 . 于是类似树上差分,\(odd_u\) 统计奇环,\(even_u\) 统计偶环 ...
- PHP,javascript实现大文件上传
HTML代码 <!doctype html> <html lang="en"> <head> <meta charset="UT ...
- Javascript 函数声明、调用、闭包
1 # Javascript 函数声明.调用.闭包 2 # 一.函数声明 3 # 1.直接声明.浏览器在执行前,会先将变量和函数声明进行提升. 4 fn(); 5 function fn () { 6 ...
- 选择结构——if控制语句单、双、多分支结构
1.if控制语句 概念: if控制语句共有3种不同形式,分别是单分支结构.双分支结构和多分支结构. (1)使用 if 语句实现单分支处理 语法格式: if(表达式){ 语句 } 流程图: 执行步骤: ...
- benchmark性能测试
目录 benchmark介绍 benchmark运行 benchmark运行参数 benchmark性能测试案例 benchmark介绍 基准测试主要是通过测试CPU和内存的效率问题,来评估被测试代码 ...
- vue2与vue3实现响应式的原理区别和提升
区别: vue2.x: 实现原理: 对象类型:Object.defineProperty()对属性的读取,修改进行拦截(数据劫持): 数组类型:通过重写更新数组的一系列方法来进行拦截(对数组的变更方法 ...
- Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo
前言 前一篇介绍了横向柱图图.本篇将介绍基础饼图使用,并将其封装一层Qt. 本篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口. Demo演示 ...
- 第八十一篇:Vue购物车(二) 名称,图片,价格的渲染
好家伙, 1,为组件封装属性, 需要封装以下属性: 需要定义的属性 属性名 值的类型 商品名 title String 商品图片 pic String 商品价格 price Number 是否勾选 s ...