`
01jiangwei01
  • 浏览: 541625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

docx4j 动态生成表格 (一 )

 
阅读更多

 使用docx4j模板动态制作表格代码实现过程(一 ),模板在附件中 ,可以执行代码看结果

模板式样:



 

最终式样 :



 

制作过程 :

   将模板制作好后,变量使用'${}'表示。使用解压缩工具打开word2007,解压并打开word/document.xml文件确保其格式如下图 :



 

 

 

 执行代码 :

import java.util.HashMap;
import java.util.List;

import javax.xml.bind.JAXBException;

import org.docx4j.TraversalUtil;
import org.docx4j.XmlUtils;
import org.docx4j.finders.ClassFinder;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
import org.docx4j.wml.Tbl;
import org.docx4j.wml.Tr;

/**
 * 个人实例
 * 加载多个模板,其中一个模板有循环出现的表格数据,有图片贴图做用户名
 * 最终将多个模板合并到一个输入流或者是合并到一个文档中
 * 
 * @author Administrator
 *
 */
public class MyExapmle2 {
	private static final  String templetate_img_docx  = "";
	
	private static final  String tale_templetate_docx  = "\\myexamples\\tale_templetate.docx";
	
	private static final  String tale_output_docx  = "\\myexamples\\tale_output.docx";
	
	public static void main(String[] args) throws Docx4JException, JAXBException {
		
		//加载表格类型模板
		WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
				.load(new java.io.File(System.getProperty("user.dir")+tale_templetate_docx));
		//定位需要替换的位置
		ClassFinder finder = new ClassFinder(Tbl.class); // <----- change this to suit
		MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
		new TraversalUtil(documentPart.getContent(), finder);
		System.out.println(String.format("查找到%d个表格 "    , finder.results.size() ));
		
		Tbl table_selected =  (Tbl) finder.results.get(1);
		List trs = table_selected.getContent();
		org.docx4j.wml.Tr templetate_row = (Tr)trs.get(1);
		//替换第二行的数据
		List<Object>tds = templetate_row.getContent();
		HashMap datamap = new HashMap();
		datamap.put("id", "1");
		datamap.put("name", "张三");
		datamap.put("age", "12");
		datamap.put("p", "山东");
		datamap.put("c", "青岛");
		
		HashMap datamap2 = new HashMap();
		datamap2.put("id", "2");
		datamap2.put("name", "李四");
		datamap2.put("age", "12");
		datamap2.put("p", "山东");
		datamap2.put("c", "青岛");
		
		String templetate_row_string = XmlUtils.marshaltoString(templetate_row);
		Object newTr = XmlUtils.unmarshallFromTemplate(templetate_row_string,datamap);
		table_selected.getContent().add(newTr);
		
		newTr = XmlUtils.unmarshallFromTemplate(templetate_row_string,datamap2);
		table_selected.getContent().add(newTr);
		//移除第一行
		table_selected.getContent().remove(1);
		//保存文件
		String filename = System.getProperty("user.dir") + tale_output_docx;
		wordMLPackage.save(new java.io.File(filename) );
	}
}

 

 模板在附件中 ,可以执行代码看结果

 

  • 大小: 290.3 KB
  • 大小: 412.5 KB
  • 大小: 256.9 KB
  • 大小: 298.7 KB
分享到:
评论

相关推荐

    docx4j根据书签替换word中的内容

    在IT行业中,尤其是在文档处理领域,`docx4j`是一个非常重要的库,它允许开发者通过编程方式操作Microsoft Office Open XML(OOXML)格式的文件,如.docx、.xlsx和.pptx等。本篇将详细介绍如何使用`docx4j`根据书签...

    Java结合docx4j生成docx文件

    此外,docx4j还支持表格、图片、页眉页脚等高级功能。例如,要插入一张图片,你需要先将其转换为XML可读的格式,然后添加到文档中: ```java import org.docx4j.dml.wordprocessingDrawing.Inline; import org.docx...

    docx4j所需jar包全

    **docx4j** 是一个Java库,专为处理Microsoft Office Open XML (OOXML) 文件格式,如.docx、.xlsx和.pptx而设计。它提供了强大的功能,包括创建、读取、修改以及转换这些文件。在本讨论中,我们将深入探讨docx4j在...

    docx4j及其依赖包

    1. **文档创建**: docx4j可以生成全新的Word文档,包括创建段落、列表、表格等元素,并能设置字体、颜色、大小等样式。 2. **内容替换**: 使用`Docx4j.replaceText()`方法,可以方便地替换文档中的指定文本,这在...

    docx4j所有jar包

    在Java应用中,docx4j提供了一个强大的API,使得开发者能够方便地处理这些文件,进行内容的生成、读取、编辑以及转换。 在标题提到的"docx4j所有jar包"中,通常包括docx4j主库以及它所需的依赖包。这些依赖包可能...

    docx4j全部jar包,包含docx4j-3.2.1.jar、poi-3.14.jar等60个jar包。.zip

    docx4j是一个Java库,专门用于处理Microsoft Office Open XML(OOXML)格式,特别是.docx和.pptx文档。这个库提供了丰富的功能,包括创建、读取、修改以及转换这些文档。它允许开发者通过编程方式操作Word文档,极大...

    docx4j-3.3.3.zip

    为了方便开发者,一个名为docx4j的开源库应运而生,它允许程序员以编程方式创建、修改和转换docx文件。本文将深入探讨docx4j-3.3.3版本,以及它如何助力Java开发者在项目中高效地处理docx文档。 docx4j是一个基于...

    Docx4j office word java

    Docx4j是一款Java库,专门用于处理Microsoft Office Open XML(OOXML)格式的文档,如.docx和.xlsx。这个库提供了丰富的API,使得开发者能够创建、修改、转换以及渲染这些文档,极大地扩展了Java在办公文档处理领域...

    docx4j项目(javadoc文档、源码及示例)

    3. **模板引擎**:通过使用docx4j,开发者可以创建含有占位符的模板文档,并在运行时用动态数据填充这些占位符,实现批量生成个性化文档。 4. **读取和解析XML**:docx4j能够解析WordXML文档的内部XML结构,使...

    docx4j api

    2. **文档创建**:使用docx4j,你可以从头开始创建一个新的Word文档,添加文本、段落、表格、图片和其他元素。API提供了各种模型对象,如`org.docx4j.model.content.Paragraph`和`org.docx4j.model.datastorage....

    docx4j-3.3.3 jar包及依赖jar包

    在实际应用中,docx4j不仅可以用于生成动态报告、批量处理文档,还可以用于自动化测试,例如验证生成的文档是否满足特定格式和内容要求。此外,由于它支持转换到HTML、PDF等多种格式,docx4j也是将Office文档集成到...

    Docx4j入门指南

    Docx4j是一个用于Java语言中处理Word文档、PowerPoint演示文稿和Excel表格的开源类库。它允许开发者通过XML解析文档内容,而不是采用DOM或SAX解析器。Docx4j使用JAXB(Java API for XML Binding)在内存中构建文档的...

    docx4j相关资料

    总的来说,docx4j是一款功能全面且易用的Java库,无论是在简单的文档生成,还是复杂的文档处理和转换任务中,都能发挥重要作用。通过深入理解和熟练使用docx4j,开发者可以高效地处理各种OOXML文档,提升项目效率。

    docx4j-community-8.1.5.zip

    docx4j-JAXB-Internal-8.1.5.jar则包含了JAXB(Java Architecture for XML Binding)的内部实现,这是docx4j解析和生成XML文档的基础。JAXB允许Java对象和XML数据之间进行自动转换,简化了数据绑定和序列化的过程。 ...

    docx4j操作word2007

    - **模板处理**:利用docx4j的模板引擎,可以动态生成文档,适用于批量报告生成、邮件合并等场景。 - **样式与主题**:控制文档的样式,包括字体、颜色、页面边距等,可以自定义主题或应用预设主题。 - **图像...

    docx4j-community-6.0.1

    例如,一个企业可以利用docx4j根据数据库中的数据动态生成定制化的报告,或者在Web应用中,将用户的填写内容实时转化为Word文档。 6. **性能与兼容性** docx4j经过优化,能够在处理大型文档时保持良好的性能。同时...

    docx4j 替换文本

    - **模板处理**:在批量生成报告或信函时,docx4j可以作为模板引擎,动态插入变量数据,实现个性化内容的生成。 5. **最佳实践与注意事项** - **性能优化**:由于docx4j是基于XML操作,大型文档可能会消耗大量...

    docx4j(jar,src,依赖JAR)

    1. **文档生成**:docx4j允许开发者动态生成Word文档,包括文本、段落、表格、图像和图表。这在需要自动生成报告或合同的业务场景中非常有用。 2. **读取与解析**:通过docx4j,可以读取现有的.docx文件,并对其...

Global site tag (gtag.js) - Google Analytics