大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。
用xml做导出方案。
先创建一个word文档,按照需求在word中填好一个模板,然后把对应的数据换成变量${},然后将文档保存为xml文档格式,使用文档编辑器打开这个xml格式的文档,去掉多余的xml符号,使用Freemarker读取这个文档然后替换掉变量,输出word文档即可
需要freemarker jar包
/**
Project Name:exam-services
File Name:DownloadService.java
Package Name:com.wt.service.download
Date:2016年9月28日下午4:44:37
Copyright (c) 2016, chenzhou1025@126.com All Rights Reserved.
*/
package com.wt.service.download;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletResponse;
import net.paoding.rose.web.Invocation;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
/**
ClassName:DownloadService
Function: 文件下载.
Reason: ADD REASON.
Date: 2016年9月28日 下午4:44:37
@author wpengfei
@version
@since JDK 1.6
@see
*/
@Service
public class DownloadService {
private Logger logger = Logger.getLogger(this.getClass())