java使用freemarker完成试卷的Word导出

更新时间:2023-06-15 01:09:25 阅读: 评论:0

java使⽤freemarker完成试卷的Word导出
第⼀次近距离接触freemarker,先让我们谈⼀谈这个技术:
1、什么是freemarker?
freemarker是⼀款模板搜索引擎,简单讲就是⽤于⽣成静态化页⾯的⼯具;
2、有什么作⽤?
可以将数据与模板进⾏结合,统⼀⼀次性批量⽣成静态化页⾯,也就是html页⾯,放到硬盘上,访问的时候,直接访问⽣成好的静态页⾯,这样可以不⽤访问数据库,给数据库降低并发访问压⼒;也不⽤访问应⽤服务器,给应⽤服务器降低并发压⼒;客户因为直接访问的是静态页⾯,所以不需要Tomcat解析,浏览器可以直接访问,速度快,客户体验好;
应⽤场景:
对于⼀些不经常变化的页⾯,数据也不经常变化,可以通过freemarker,统⼀⽣成静态化页⾯;
当然还有今天的主题,可以⽣成Word⽂档;
3、怎么⽤?
⾸先要导⼊freemarker的jar包:
还要准备好模板(这⾥要注意模板的格式是ftl或html)
准备好数据
然后使⽤freemarker中的Configuration类进⾏页⾯的⽣成;
还有就是freemarker可以与spring进⾏整合:
<!-- 静态化类实例化 -->
<bean id="StaticPageServiceImpl"class="vice.StaticPageServiceImpl">
<property name="freeMarkerConfigurer">
<bean class="org.springframework.web.rvlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath"value="/WEB-INF/ftl/"/>
<property name="defaultEncoding"value="utf-8"/>
</bean>
</property>
</bean>
</beans>
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import javax.rvlet.ServletContext;
import org.t.ServletContextAware;
import org.springframework.web.rvlet.view.freemarker.FreeMarkerConfigurer;
plate.Configuration;
plate.Template;
/**
* 配置式静态化开发
* @author zj
*
*/
public class StaticPageServiceImpl implements StaticPageService, ServletContextAware{
//注⼊
private Configuration conf;
public void tFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {
}
//静态化程序
@Override
public void index(Map<String, Object> map, String id) throws Exception{
String path = "/html/product/" + id + ".html";
String url = getAllPath(path);
//判断没有⽗级⽂件夹
File f = new File(url);
供认的读音
File parentFile = f.getParentFile();
背影作者if(!ists()){
parentFile.mkdirs();
}形容女生漂亮的成语
//读
Template template = Template("product.html");
//输出到指定流⽂件
Writer out = new OutputStreamWriter(new FileOutputStream(f) , "utf-8");
//处理
template.process(map, out);
out.clo();负暄之献
}
//声明⼀个上下⽂
private ServletContext rvletContext;
足球动作//获取全路径
public String getAllPath(String path){
RealPath(path);
}
@Override
public void tServletContext(ServletContext rvletContext) {
this.rvletContext = rvletContext;
}欧阳修书法
}
下来就进⼊正题,完成Word的导出:
⼀、模板准备⼯作:
⾸先要知道如何制作模板:我是需要导出试卷,所以暂时没有涉及到表格的问题(可能是需求不太⼀样,本⼈只是做了简单的试卷导出);所以我在准备的时候只是准备了⼀个简单的模板:
先⽤Word⽂档写好,然后将其保存为xml的形式进⾏模板的编辑:
看到上边的⿊字就是咱们Word⽂档中的占位字,也是下边需要替换的字,说到替换就必须要了解其特有的模板语⾔:(本⼈只是了解了⼀些最基
本的)
最后是⼀个map的遍历⽅式
<w:body>
<w:p w:rsidR="00A42CA5"w:rsidRDefault="00A42CA5"w:rsidP="003206CE">
<w:pPr>
<w:spacing w:line="360"w:lineRule="auto"/>
<w:rPr>
<w:lang w:eastAsia="zh-CN"/>
</w:rPr>
</w:pPr>
<w:bookmarkStart w:id="0"w:name="_GoBack"/>
<w:bookmarkEnd w:id="0"/>
</w:p>大话西游电影下载
<w:p w:rsidR="006B1E33"w:rsidRDefault="003064E2">
<w:pPr>英语b级考试
<w:jc w:val="center"/>
<w:rPr>
<w:lang w:eastAsia="zh-CN"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>

本文发布于:2023-06-15 01:09:25,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1038872.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模板   访问   静态   准备
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图