Java 在Word中合并单元格时删除重复值
source link: https://blog.51cto.com/u_15656056/5582267
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Java 在Word中合并单元格时删除重复值
精选 原创程序环境:
方法1:手动引入。将 Free Spire.Doc for Java下载到本地,解压,找到lib文件夹下的Spire.Doc.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序
方法2: 如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
具体步骤:
- 创建Document类的对象并使用Document.loadFromFile()方法加载示例文档。
- 用Document.getSections()方法获取节集合,然后使用 SectionCollection.get() 方法获取特定节。
- 用Section.getTables()方法获取表集合,然后使用 TableCollection.get() 方法获取所需的表。
- 调用 mergeCell(Table table, boolean isHorizontalMerge, int index, int start, int end)方法垂直或水平合并表格单元格。该方法将判断要合并的单元格是否具有相同的值,并在合并后的单元格中只保留一个值。
- 使用Document.saveToFile()方法保存文档。
完整代码:
【Java】
public class RemoveDuplicateValues {
public static void main(String[] args) throws Exception {
//创建Document类的对象并加载示例文档。
Document document = new Document();
document.loadFromFile("水果信息.docx");
//获取第一节
Section section = document.getSections().get(0);
//获取第一个表格
Table table = section.getTables().get(0);
//调用mergeCell()方法纵向合并单元格
mergeCell(table, false, 0, 1, 3);
//调用mergeCell()方法横向合并单元格
mergeCell(table, true, 0, 0, 1);
//保存文档
document.saveToFile("输出文档.docx",FileFormat.Docx_2013);
}
//自定义合并的 Cell() 方法以在合并单元格时删除重复值
public static void mergeCell(Table table, boolean isHorizontalMerge, int index, int start, int end) {
if (isHorizontalMerge) {
//从表格获取单元格
TableCell firstCell = table.get(index, start);
//调用 getCellText() 方法获取单元格的文本
String firstCellText = getCellText(firstCell);
for (int i = start + 1; i <= end; i++) {
TableCell cell1 = table.get(index, i);
//检查文本是否与第一个单元格相同
if (firstCellText.equals(getCellText(cell1))) {
//如果是,清除单元格中的所有段落
cell1.getParagraphs().clear();
}
}
//横向合并单元格
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();
}
}
//纵向合并单元格
table.applyVerticalMerge(index, start, end);
}
}
public static String getCellText(TableCell cell) {
StringBuilder text = new StringBuilder();
//遍历单元格中的段落
for (int i = 0; i < cell.getParagraphs().getCount(); i++) {
//获取每个段落的文本并将其附加到 StringBuilder
text.append(cell.getParagraphs().get(i).getText().trim());
}
return text.toString();
}
}
效果图:
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
-
4
26. 删除排序数组中的重复项 – Becomin' Charles跳至内容 Becomin' Charles Mac | Linux | 团队管...
-
5
系统数据导出excel已经很具普遍性,不单单是BI有这需求,表单性质的数据大都希望直接导出excel,这个需求甚至比邮件接收更加突出。 Davinci导出excel有两种方式,都在dashboard页面 单个widget导出 整个dashboard导出,...
-
5
vue循环出来的table怎么合并单元格 - OSCHINA - 中文开源技术交流社区 开源问答...
-
5
jxls 怎么合并单元格,大哥指定一下,紧急!紧急!紧急‼️ 魔力猫 08/17 14:09 ...
-
7
dotnet OpenXML 利用合并表格单元格在 PPT 文档插入不可见的额外版权信息本文告诉大家如何利用 Office 对于 OpenXML 支持的特性,在 PPT 的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保...
-
1
苹果iOS 16已支持一键合并重复联系人 2022年06月08日06:55 IT之家
-
0
pom版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</version> </dependency> 1.自定义合并...
-
3
二、编写工具类@Slf4jpublic class ParseExcelUtil {/** * 解析excel文档 * ps. * List<List<Map<String, Object>>>: 最外层的List是excel中的每一个sheet,第二层List每一个sheet中的行数据,从star...
-
3
电脑EXCEL怎么合并删除列?表格数据快速删除合并单元格 https://www.chenweiliang.com/cwl-29147.html
-
4
C#/VB.NET 如何在Word表格中拆分或合并单元格? 精选 原创 我们在使用Word制作表格时,由于表格较为复杂,只是简单的插入行、...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK