java 导出word xml格式_关于Java导出Word文件
做个很多个项目里基本上都涉及了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文件相关推荐
- java json转换xml格式_在Java中将JSON对象转换为XML格式?
JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...
- java utf8无bom格式_关于java:编写没有BOM的UTF-8
p>这段代码,/ p> pre> code> OutputStream out = new FileOutputStream(new File("C:/file/te ...
- java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证
最近在看spring源码,涉及到xml文档的解析.xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式). DOM解析XML是将 ...
- jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...
(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java word导出图片格式_用java怎么将word文档转成图片格式
展开全部 使用 java 操作 openoffice 实现格式转换 辛苦了几天. 不敢独享成果 首先,要安装 openoffice (废话- -) 创建JAVA项目的时候 需要323131333532 ...
- java 使用 jacob 实现 将 freemarker 导出的 XML 格式的 excel 转 xls、xlsx 格式
最近项目上有一个导出复杂excel的需求,发现无论是使用 poi 还是使用阿里巴巴的 easyexcel ,实际上都是编程式的方式,实现起来代码比较复杂而且不便于维护,于是决定采用 freemarke ...
- java 图片 word文档_【Java】用Freemarker完美导出word文档(带图片)
Java 用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...
- 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 ...
最新文章
- 代码写对了还挂了?程序媛小姐姐从 LRU Cache 带你看面试的本质
- 发展大数据还有三道坎要迈
- Netty 高性能特性
- man iptables by iptables-save v1.3.5
- 织梦无子栏目时禁止调用同级栏目
- asp.net core新特性(1):TagHelper
- python 3.6.5 shell_Linux 安装 Python3.6.5
- 前端学习(2375):项目介绍结束
- 设计模式之结构类模式PK
- java 保存 设置_java – 保存设置的实现
- 【李宏毅2020 ML/DL】P2 Regressio - Case Study
- 帝骑k触屏模拟器_假面骑士decade神主牌模拟器手机版下载|
- java话费充值_手机话费充值-java示例
- 阿里云服务器配置端口安全组完整教程大全
- phalcon 自动加载_Phalcon自动加载(PHP自动加载),phalcon加载php_PHP教程
- 如何制作U盘启动盘来安装电脑系统
- vs2015 x86的Qt项目迁移到vs2017 x64平台
- grpc-gateway插件:让客户端通过调http接口来远程调用grpc服务
- 安徽大学c语言作业题库,安徽大学C语言考试试卷
- 什么是SHA256?比特币是如何应用SHA256算法的?