做个很多个项目里基本上都涉及了word、Excel导入导出,虽然其中的要求有些小差异,不过总的方向上变化不大,所以做一些总结:

一)、利用freemarker,制作xml模版导出word

Xml模版部分:

打开word另存为xml格式(注:这里一定要使用2003版xml,为了兼容低版office,也是为了如果存在图片时候导出)

标记要填写表格内容为可识別字符如:“111”,“aaa”之类的

利用xml编辑器“foxe_CHS.exe”,对齐生成xml模版文件内容,方便插入

如果有图片的,同理,预先插入一张样例图片后,然后再另存为xml模版 。

Java代码部分:

需要freemarker.jar包 /**

* 导出

* @return

* @throws Exception

*/

@RequestMapping(value = "export")

public String export(FormBean formbean,

HttpServletRequest request, HttpServletResponse response,

RedirectAttributes redirectAttributes) throws Exception {

String path = request.getSession().getServletContext().getRealPath("/WEB-INF/template");

Configuration config = new Configuration();

try {

this.exportNew(request, response,formbean.getBean(), path, config);

return null;

} catch (Exception e) {

addMessage(redirectAttributes, "导出word失败!错误信息:" + e.getMessage());

}

return "redirect:" + Global.getAdminPath() + "/pg/common/error";

}

public void exportNew(HttpServletRequest request,HttpServletResponse response,

Map map, String path, Configuration config) {

try {

//获取模版

config.setDirectoryForTemplateLoading(new File(path));

Template template = config.getTemplate("newWord.xml", "UTF-8");

Map root = new HashMap();

//查询人员信息数据

Map base = getBaseForExport(map);

/*

//如果存在图片导出,只需要将图片文件转化为Base64编码的字节数组字符串

InputStream photoIn = new FileInputStream(new File("photo_file_path"));

base.put("IMAGEBASE64", ImageUtil.getImageBase64(photoIn));

*/

String[] keys = {"NAME","SEX_NAME","AGE","DEPT_NAME","SC_DEPT","CUR_DUTY",

"POLITY_NAME","HIGH_EDU_NAME","HIGH_DEG_NAME","DUTY_LEVEL_NAME","SPC_BACKGROUND"};

//过滤

if (base != null) {

for (String key : keys) {

if (!base.containsKey(key)){

base.put(key, "");

}

}

}

root.put("base", base);

/*

//如果存在list表格导出

//List> list = this.exportList(map);

//root.put("new_list", list);

*/

//导出

String filename = URLEncoder.encode("人员信息.doc","UTF-8");

response.setContentType("application/msword");

response.setHeader("Content-disposition", "attachment; filename=" + filename);

template.process(root, response.getWriter());

} catch (Exception e) {

System.out.println("导出失败:"+e.getMessage());

}

}

/**

* 将图片文件转化为字节数组字符串,并对其进行Base64编码处理

*/

public static String getImageBase64(InputStream in) {

byte[] data = null;

// 读取图片字节数组

try {

data = new byte[in.available()];

in.read(data);

in.close();

} catch (IOException e) {

e.printStackTrace();

}

// 对字节数组Base64编码

BASE64Encoder encoder = new BASE64Encoder();

return encoder.encode(data);// 返回Base64编码过的字节数组字符串

}

替换xml模版内可识別字符“111”为${base.NAME}

替换完毕导出即可。

二)、使用累积:

导出一定要过滤特殊字符: /**

* xml特殊字符的转换

* & = &

* ' = '

* " = "

* > = >

* < = <

*/

public static void xmlCharConvert(Map map){

String[] oldArray = new String[]{">","

String[] newArray = new String[]{">","<","&","'",""",""};

Set keys = map.keySet();

for (String key : keys) {

Object obj = map.get(key);

if(obj instanceof String && obj!=null){

map.put(key, StringUtils.replaceEach(ObjectUtils.toString(obj), oldArray, newArray));

}

}

}

如果有list类的表格导出:使用${nlist.NAME}#list>

判断字符串是否存在"3"(-1表示不存在):

常用符号,空白方块:

打勾的方块:

制作另一种形式的列表表格:

正常表头

带tr的合并的表头

#if>

#list>

java 导出word xml格式_关于Java导出Word文件相关推荐

  1. java json转换xml格式_在Java中将JSON对象转换为XML格式?

    JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...

  2. java utf8无bom格式_关于java:编写没有BOM的UTF-8

    p>这段代码,/ p> pre> code> OutputStream out = new FileOutputStream(new File("C:/file/te ...

  3. java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证

    最近在看spring源码,涉及到xml文档的解析.xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式). DOM解析XML是将 ...

  4. jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...

    (六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...

  5. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  6. java word导出图片格式_用java怎么将word文档转成图片格式

    展开全部 使用 java 操作 openoffice 实现格式转换 辛苦了几天. 不敢独享成果 首先,要安装 openoffice (废话- -) 创建JAVA项目的时候 需要323131333532 ...

  7. java 使用 jacob 实现 将 freemarker 导出的 XML 格式的 excel 转 xls、xlsx 格式

    最近项目上有一个导出复杂excel的需求,发现无论是使用 poi 还是使用阿里巴巴的 easyexcel ,实际上都是编程式的方式,实现起来代码比较复杂而且不便于维护,于是决定采用 freemarke ...

  8. java 图片 word文档_【Java】用Freemarker完美导出word文档(带图片)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  9. java 读取word 带格式_java读取word带格式_游戏下载_游戏攻略资讯_尽在搜狗爱玩

    Started learning Java and think you're ready to move on to the next level? Find out if you have a go ...

最新文章

  1. 代码写对了还挂了?程序媛小姐姐从 LRU Cache 带你看面试的本质
  2. 发展大数据还有三道坎要迈
  3. Netty 高性能特性
  4. man iptables by iptables-save v1.3.5
  5. 织梦无子栏目时禁止调用同级栏目
  6. asp.net core新特性(1):TagHelper
  7. python 3.6.5 shell_Linux 安装 Python3.6.5
  8. 前端学习(2375):项目介绍结束
  9. 设计模式之结构类模式PK
  10. java 保存 设置_java – 保存设置的实现
  11. 【李宏毅2020 ML/DL】P2 Regressio - Case Study
  12. 帝骑k触屏模拟器_假面骑士decade神主牌模拟器手机版下载|
  13. java话费充值_手机话费充值-java示例
  14. 阿里云服务器配置端口安全组完整教程大全
  15. phalcon 自动加载_Phalcon自动加载(PHP自动加载),phalcon加载php_PHP教程
  16. 如何制作U盘启动盘来安装电脑系统
  17. vs2015 x86的Qt项目迁移到vs2017 x64平台
  18. grpc-gateway插件:让客户端通过调http接口来远程调用grpc服务
  19. 安徽大学c语言作业题库,安徽大学C语言考试试卷
  20. 什么是SHA256?比特币是如何应用SHA256算法的?

热门文章

  1. null不能用于数值比较,道理都懂,但你真的注意了吗
  2. 7天瓜分36万美妆,勇敢“晒丫”才是年轻人的生活方式
  3. 大数据Spark对SogouQ日志分析
  4. 计算机专业放假回家修电脑,放假回家各种修电脑
  5. 微PE -- 有情怀的工具箱
  6. 问题解决:Java解压文件时报错:MALFORMED
  7. quasar树组件勾选策略改写
  8. [网安实践III] 实验3.逆向分析
  9. mac clion 下 stdio.h file not found
  10. tkMyBatis执行insert返回主键