java word模板 变量,java导出word模板

项目中,可能会有很多地方需要导出word模板,首先,你需要有模板,然后,模板另存为xml格式。

package com;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Map;

import freemarker.cache.FileTemplateLoader;

import freemarker.cache.TemplateLoader;

import freemarker.template.Configuration;

import freemarker.template.Template;

public class CreateWord {

public static void main(String[] args) {

Map cont = new HashMap();// 存储数据

Configuration cfg = new Configuration();

TemplateLoader templateLoader = null;

try {

//模板的路径

File fir = new File("W:/test/wswhr/");

//生成文件的路径及文件名。

File outFile = new File("W:/test/wswhr/委托创作合同.doc");

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

// 使用FileTemplateLoader

//制定模板路径

templateLoader = new FileTemplateLoader(fir);//

String tempname = "委托创作合同.xml";

cfg.setTemplateLoader(templateLoader);

Template t = cfg.getTemplate(tempname, "UTF-8");

t.process(cont, out);

out.flush();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}注意,里面的

cfg.setTemplateLoader(templateLoader);

这一句,是指定模板所在目录。

如果只是运行一些测试类,或者本地main方法可以用这个。

如果是在线上服务器,请用下面的代码来制定模板路径。

//创建配置实例

Configuration configuration = new Configuration();

//设置编码

configuration.setDefaultEncoding("UTF-8");

//ftl模板文件统一放至 com.lun.template 包下面

configuration.setClassForTemplateLoading(WordUtil.class, "/cn/digitalpublishing/templates/");

//获取模板

Template template = configuration.getTemplate(templateName);

这里的,制定模板路径的方法是,setClassForTemplateLoading.

望文生义也知道,根据指定的class文件,去找对应的目录加载模板。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用第三方工具类库Hutool或者fr.opensagres.xdocreport来根据Word模板导出Word文档docx。其,使用Hutool可以通过以下步骤实现: 1. 引入Hutool依赖: ``` <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.10</version> </dependency> ``` 2. 加载Word模板文件: ``` DocxWriter writer = new DocxWriter("template.docx"); ``` 3. 替换模板变量: ``` writer.replace("name", "张三"); ``` 4. 保存并关闭文件: ``` writer.flush(new FileOutputStream("output.docx")).close(); ``` 而使用fr.opensagres.xdocreport可以通过以下步骤实现: 1. 引入相关依赖: ``` <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.xdocreport.document.docx</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> ``` 2. 加载Word模板文件: ``` InputStream in = new FileInputStream(new File("template.docx"));IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Freemarker); ``` 3. 创建数据模型并填充数据: ``` IContext context = report.createContext(); context.put("name", "张三"); ``` 4. 生成Word文档并保存: ``` OutputStream out = new FileOutputStream(new File("output.docx")); report.process(context, out); out.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值