java web 导出word_JavaWeb Project使用FreeMaker导出Word文件

基本思路

1. 导入freemaker2.3.jar

2. 需要导出的Word模板

3. 在Word内填入值的标签

4. Word另存为xml(2003版本)

5. Coding

6. 导出Word文件

具体操作

1. Intellij IDEA > FIle > Project Structure > Libraries > "+"(左下角) > OK

f70ba1c61c3a

导入Freemaker Jar

2. Word模板有需求方提供

f70ba1c61c3a

基本模板

3. 在Word内填入需要值的标签

f70ba1c61c3a

填入对应标签

4. 另存为Word 2003 XML文档

f70ba1c61c3a

转出XML

5. 放进项目文件

6. 实现代码

'''

/**

* 获取导出任务书所需要的数据,并封装进dataMap

* @param studWorkProcess

* @param studWork1

* @param request

* @param response

* @return

*/

@RequiresPermissions("studwork:studwork1:studWork1:edit")

@RequestMapping(value = {"exportStudWork1"})

public StringexportStudWork1(StudWorkProcess studWorkProcess, StudWork1 studWork1, HttpServletRequest request, HttpServletResponse response) {

studWork1.setId(studWorkProcess.getId());

List studWork1List =studWork1Service.findList(studWork1);

if(studWork1List.size() ==1) {

Map dataMap =new HashMap();

// set this yaer

dataMap.put("year","2020");

User user =systemService.getUser(studWork1List.get(0).getStudId());

// get student user obj

dataMap.put("user",user);

dataMap.put("studWork1", studWork1List.get(0));

User currentStudent =systemService.getUser(studWork1.getStudId());

// file name

String fileName = currentStudent.getNo() +"_" + currentStudent.getName() +"_" +"任务书.doc";

try {

download(response, fileName, dataMap);

}catch (Exception e) {

e.printStackTrace();

}

}

return "modules/studwork/studwork1/studWork1List";

}

/**

* 导出任务书doc文件

* @param response

* @param newWordName

* @param dataMap

*/

public void download(HttpServletResponse response, String newWordName, Map dataMap) {

Configuration configuration =new Configuration();

// set encoding

configuration.setDefaultEncoding("utf-8");

String path =this.getClass().getResource("/").getPath();

StudWork1 studWork1 =new StudWork1();

// get template path

configuration.setClassForTemplateLoading(studWork1.getClass(), "/");

Template t =null;

try {

// word1.xml is a template(generate by file 01)

User user = UserUtils.getUser();

if(user.getIsTeacher() ==null || user.getIsTeacher() ==""){

t = configuration.getTemplate("word1.xml","utf-8");

}else{

t = configuration.getTemplate("word1_stamp.xml","utf-8");

}

}catch (Exception e) {

e.printStackTrace();

}

File outFile =null;

Writer out =null;

String filename = newWordName;

try {

outFile =new File(newWordName);

out =new BufferedWriter(new OutputStreamWriter(

new FileOutputStream(outFile),"utf-8"));

}catch (Exception e1) {

e1.printStackTrace();

}

try {

t.process(dataMap, out);

}catch (Exception e) {

e.printStackTrace();

}

try {

out.flush();

out.close();

}catch (IOException e) {

e.printStackTrace();

}

InputStream fis =null;

OutputStream toClient =null;

try {

fis =new BufferedInputStream(new FileInputStream(outFile));

byte[] buffer =new byte[fis.available()];

fis.read(buffer);

fis.close();

// clear response

response.reset();

// set header and translate encoding

filename = URLEncoder.encode(filename, "utf-8");

response.addHeader("Content-Disposition", "attachment;filename=" + filename+"");

response.addHeader("Content-Length", "" + outFile.length());

toClient =new BufferedOutputStream(response.getOutputStream());

response.setContentType("application/octet-stream");

toClient.write(buffer);

toClient.flush();

}catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(fis!=null){

fis.close();

}

}catch (IOException e) {

e.printStackTrace();

}

try {

if(toClient!=null){

toClient.close();

}

}catch (Exception e) {

e.printStackTrace();

}

}

}

'''

采坑

1. Word导出格式一定要是2003版本的XML,不然生成的文件无法正常打开

2. Word另存为过程中,会将部分标签分开,需要手动调整

'''

${

studwork.thesisTitle

}

'''

调整后

'''

${studwork.thesisTitle}

'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人编程与python语言的区别_儿童编程和机器人编程有啥区别?

这是最全面的回答!一篇文章让你彻底了解少儿编程和机器人编程的区别!虽然都带有“编程”二字,但少儿编程和机器人编程还是有本质区别的,有哪些不一样呢?偷懒的家长可以直接看下面这张表格:想要详细了解的话…

php中tables,php显示TABLE数据

php显示TABLE数据2018-11-22//processShowData.php查询数据库表信息学生一览表<?php echo $id ?><?php echo $name ?><?php echo $age ?><?php echo $sex ?><?php echo $address ?>结果&#xff1a;学号姓名年龄性别地址1Jane26female…

云服务器安装python_云服务器 搭建 python

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

php获取当前系统配置文件,thinkphp5.1+配置文件结构及获取

tp5.1和5.0的差别还是不小的&#xff0c;取消了很多东西&#xff0c;例如基本配置项就做了很大的改变。5.1没有config.php配置文件&#xff0c;默认配置都在app.php配置文件&#xff0c;并且配置参数区分大小写&#xff0c;所有的配置文件在config目录下。和5.0最大的区别是&am…

sql 除以_使用SQL分析游戏运营情况

数据来源&#xff1a;http://www.dcjingsai.com/common/cmpt/%E6%B8%B8%E6%88%8F%E7%8E%A9%E5%AE%B6%E4%BB%98%E8%B4%B9%E9%87%91%E9%A2%9D%E9%A2%84%E6%B5%8B%E5%A4%A7%E8%B5%9B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html游戏介绍&#xff1a;《野蛮时代》是一款SLG游戏。在…

好看的php验证码,一漂亮的PHP图片验证码实例

一、显示效果二、代码如下代码如下:/** Author fy*/$imgwidth 100; //图片宽度$imgheight 40; //图片高度$codelen 4; //验证码长度$fontsize 20; //字体大小$charset abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789;$font Fonts/segoesc.ttf;$imimagecreatetruecolor…

检测到目标服务器启用了trace方法_深度学习检测小目标常用方法

引言在深度学习目标检测中&#xff0c;特别是人脸检测中&#xff0c;小目标、小人脸的检测由于分辨率低&#xff0c;图片模糊&#xff0c;信息少&#xff0c;噪音多&#xff0c;所以一直是一个实际且常见的困难问题。不过在这几年的发展中&#xff0c;也涌现了一些提高小目标检…

php正则大小写字母,php 常见email,url,英文大小写,字母数字组合等正则表达式详解...

操作符 描述\ 转义符(), (?:), (?), [] 圆括号和方括号*, , ?, {n}, {n,}, {n,m} 限定符^, $, \anymetacharacter 位置和顺序| “或”操作全部符号解释字符 描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如&#xff0c;’…

学python五大理由_学习Python的五大理由

Python已经是25岁的大叔级编程语言了&#xff0c;但近年来Python反而变得越来越流行&#xff0c;在TIOBE编程语言指数排行榜中&#xff0c;Python的排名从去年的第八名飙升到了第五名(下图)。无论是编程新手还是保持饥饿的编程老鸟&#xff0c;Python都有着不可阻挡的魅力&…

redis连不上java,java使用jedis连不上linux上redis服务

java用的jedis连接redis。reids是安装在虚拟机里面&#xff0c;ip是192.168.216.128&#xff0c;在本地能ping通虚拟机&#xff0c;并且xshell也能远程登录虚拟机。虚拟机内的redis服务正常&#xff0c;可以启动&#xff0c;并且执行命令没问题。问题&#xff1a;在虚拟机外tel…

python图片隐写_Lsb图片隐写

前言在刚刚过去的网鼎杯第一场比赛中&#xff0c;做到了一道杂项题是关于lsb隐写的。LSB全称为 least significant bit&#xff0c;是最低有效位的意思。Lsb图片隐写是基于lsb算法的一种图片隐写术&#xff0c;以下统称为lsb隐写&#xff0c;这是一种常见的信息隐藏方法。当然关…

php自定义能过滤器,过滤器与自定义过滤器的介绍

angularjs中的过滤器为了实现对于表达式结果的筛选、过滤、格式化&#xff0c;达到更好的表现效果。过滤器的语法&#xff1a;支持多重过滤和传参{{expression | 过滤器名称 : ‘参数’ | 过滤器名称2&#xff1a;‘参数’ }}方式&#xff1a;| -》 管道常用的过滤器&#xff1…

python二维元素向量_详解python Numpy中求向量和矩阵的范数

在python Numpy中求向量和矩阵的范数实例np.linalg.norm(求范数):linalglinear(线性)algebra(代数)&#xff0c;norm则表示范数。函数参数x_normnp.linalg.norm(x, ordNone, axisNone, keepdimsFalse)①x: 表示矩阵(也可以是一维)②ord&#xff1a;范数类型向量的范数&#xff…

find查找所有php,linux中的find命令—查找文件名

1.在某目录下查找名为“elm.cc”的文件find /home/lijiajia/ -name elm.cc2.查找文件名中包含某字符(如"elm")的文件find /home/lijiajia/ -name *elm*find /home/lijiajia/ -name elm*find /home/lijiajia/ -name *elm3.根据文件的特征进行查询find /home/lijiajia/…

mac定时执行python_Python脚本实现在Mac上DIY定时提醒功能

背景&#xff1a;这两天一直沉迷于在电脑上看书&#xff0c;每到12点该吃饭时就会忘了&#xff0c;同事还要到工位上叫我&#xff0c;于是就想搞出来一个每天能够定时提醒我该做什么事情的功能&#xff0c;这样能够有提前准备。今天下午花了半天的时间研究了一下&#xff0c;最…

php 制造异常,php 异常

PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内&#xff0c;以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同…

大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...

壹猫眼Top100电影数据分析概述从这一节开始&#xff0c;我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目。在这些实际的项目案例中&#xff0c;我们将会看到一个完整的数据分析流程&#xff1a;数据清理——数据分析——数据可视化(即数据解释)。最…

php utf8格式显示中文,php截取中文字符(utf-8格式)的函数

/**UTF-8中文字符截断程序http://www.jquerycn.cn*/$str "321这是测试字符串";$str1 "()()";echo subUTF8str($str,0,3)."";echo subUTF8str($str,0,4)."";echo subUTF8str($str1,0,4)."";echo subUTF8str($str1,0,10).&q…

python计算一年有多少天_Python 案例 004 (计算当前时间是一年中的第几天)

# -*- coding:utf-8 -*-"""计算当前时间是一年中的第几天"""bissextile [31,60,91,121,152,182,213,244,274,305,335,366] #leap yearcommonYear [31,59,90,120,151,181,212,243,273,304,334,365]enterYear int(raw_input("enter the Yea…

php截取字符串函数 左右,php截取中文字符串函数的技巧

这篇文章主要介绍了php截取中文字符串函数,实例分析了php针对中文字符串操作的技巧,注意utf-8与gb2312编码的转换问题,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php截取中文字符串函数。具体实现方法如下&#xff1a;代码如下:<?php //中文字符串截取funct…