java代码实现导出或者下载xml、word、pdf、excel功能
写在前面:将用户操作日志以xml、word、pdf、excel格式的文件导出。
1、导出xml
导出xml使用JAXB的注解实现,实体如下
1 | typescript复制代码import javax.xml.bind.annotation.*; |
LogX实体如下:
1 | typescript复制代码import javax.xml.bind.annotation.*; |
@XmlAccessorType:便于对象与xml文件之间的转换
@XmlType中:参数propOrder指定映射XML时的节点顺序,使用该属性时,必须列出JavaBean对象中的所有字段,否则会报错。
@XmlRootElement :xml 文件的根元素
@XmlElementWrapper:仅允许出现在集合属性上,使用该注解后,将会在原xml结点上再包装一层xml
@XmlElement:字段,方法,参数级别的注解。该注解可以将被注解的(非静态)字段,或者被注解的get/set方法对应的字段映射为本地元素,也就是子元素。参数 name用于指定映射时的节点名称,指定生成元素的名字,若不指定,默认使用方法名小写作为元素名;参数 required字段是否必须,默认为false;参数 nillable是否处理空数据,默认为false。
其他关于JAXB的注解,大家就根据需要自行百度一下~
1 | ini复制代码 Submit submit = new Submit(); |
涉及到的download方法如下:
1 | ini复制代码private void download(File file, HttpServletResponse res) { |
2、导出word
使用freemarker技术在web后台导出word文档:
具体步骤为:
1、设计word模版
2、修改ftl模版
3、 填充数值,导出word模板
4、生成Word模板
生产word模版主要为:一个是把word文档另存为xml文档;然后把xml文档后缀改为ftl文档****
如下图,我所需要的模板为:
然后使用sublime打开后缀名为ftl的文件,通过sublime插件,将ftl文件格式化,然后找到如下图所示位置进行编辑
注意${log.xh}等其他的标签的修改
代码如下:
1 | javascript复制代码 Map<String, Object> beanParams = new HashMap<String, Object>(); |
涉及到的WordExportUtil.WordExportUtil()方法如下:
1 | ini复制代码 public static String WORD_2007 = "WORD_2007"; |
3、导出pdf
1 | ini复制代码// 新建文件 |
涉及到的toPdfPCell()方法如下:
1 | java复制代码public PdfPCell toPdfPCell(String name, int align) throws DocumentException, IOException { |
4、导出excel
参考地址:easypoi.mydoc.io/
5、所需的maven依赖为:
1 | xml复制代码<dependency> |
效果图如下:
6、导出的xml格式的文件内容如下:
7、导出的word格式的文件内容如下:
8、导出的pdf格式的文件内容如下:
9、导出的excel格式的文件内容如下:
写在最后:可能在进行这个功能实现时,我所采用的方法并不是最合理的,大家一起学习嘛
本文转载自: 掘金