http://www.chendd.cn/information/viewInformation/other/259.a
基于模板的动态单元格合并效果,以前在深入了解Jxls2.X的时候,写过一版在Excel中实现的多列并列合并处理效果,于是直接拷贝过来,对于Word里的表格来讲仍然合适,关于这个合并在Excel里面的效果时可转至Jxls2.X的相关文章查看,本篇文章重点在于在一个含有表格的模板中实现表格数据的动态循环,并且根据预置的要合并1、2、3列号,代码的实现即按照数据去进行合并展示,模板参考如下:
代码参考为
package cn.chendd.docx4j.examples;
import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXBException;
import org.docx4j.TraversalUtil;
import org.docx4j.XmlUtils;
import org.docx4j.finders.ClassFinder;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.wml.Tbl;
import org.docx4j.wml.Tr;
import cn.chendd.util.CellMergerUtil;
import cn.chendd.util.vo.CellRangeAddress;
public class TableTemplateMergeTest {
public static void main(String[] args) throws Exception {
String templatePath = System.getProperty("user.dir") + "/template/模板式表格_动态单元格合并_template.docx";
WordprocessingMLPackage wordPackage = WordprocessingMLPackage.load(newjava.io.File(templatePath));
//找到模板中的表格对象
ClassFinder find = new ClassFinder(Tbl.class);
new TraversalUtil(wordPackage.getMainDocumentPart().getContent(), find);
Tbl table = (Tbl) find.results.get(0);
//填充数据--并合并单元格
fillTableDataAndMerge(table);
String outPath = System.getProperty("user.dir") + "/template/out/模板式表格--动态单元格合并.docx";
wordPackage.save(new File(outPath));
}
//根据表格模板找到表格,并填充数据
private static void fillTableDataAndMerge(Tbl table) throws JAXBException {
List
代码实现效果参考
代码运行生成文件
模板式表格--动态单元格合并.docx