freemarker生成文件|java使用freemarker生成word文档可以动态生成目录结构么

Ⅰ 如何使用Freemarker生成java代码

Freemarker是一个模板框架。我们可以通过Freemarker进行代码生成或页面的静态生成。 现在简单的说一下怎样使用Freemarker Freemarker的主要生成类

publicbooleangenerate(StringtemplateFileName,Mapdata,StringfileName){try{//取得模板的位置StringtemplateFileDir=templateFileName.substring(0,templateFileName.lastIndexOf("/"));//取得模板的名字StringtemplateFile=templateFileName.substring(templateFileName.lastIndexOf("/"),templateFileName.length());//取得生成文件的路径StringgenFileDir=fileName.substring(0,fileName.lastIndexOf("/"));Templatetemplate=ConfigurationHelper.getConfiguration(templateFileDir).getTemplate(templateFile);FilefileDir=newFile(genFileDir);org.apache.commons.io.FileUtils.forceMkdir(fileDir);Fileoutput=newFile(fileName);if(output.exists()){//如何代码已存在不重复生成returnfalse;}Writerwriter=newFileWriter(output);template.process(data,writer);writer.close();}catch(TemplateExceptione){e.printStackTrace();returnfalse;}catch(IOExceptione){e.printStackTrace();returnfalse;}returntrue;}

Ⅱ freemarker 导出word 文档 怎么写

将要导出的Word另存为xml格式的文件,打开xml 在其中添加freemarker标签,然后另存为outChairDoc.ftl文件.第一步要加入Freemarker.jar包。Servlet代码如下:在outChairDoc.ftl放在包cn.skyclass.jiaowu.freemarker.template下public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); try { createDoc(response); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }}public void createDoc(HttpServletResponse response) throws Exception {// 要填入模本的数据文件 Map dataMap = new HashMap(); dataMap.put("docTitle", "fdfdfdfdfdfdf用户信息"); List<ChairInfo> list = new ArrayList<ChairInfo>(); ChairInfo chairInfo = new ChairInfo(); chairInfo.setChairTitle("dfdfd"); chairInfo.setTeacherName("tea"); chairInfo.setStartTime(new Date()); chairInfo.setPlace("dfdfd"); list.add(chairInfo); dataMap.put("chairInfoList", list); // 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,// 这里我们的模板是放在com.havenliu.document.template包下面configuration.setClassForTemplateLoading(this.getClass(),"/cn/skyclass/jiaowu/freemarker/template");Template t = null;try {// test.ftl为要装载的模板 t = configuration.getTemplate("outChairDoc.ftl"); t.setEncoding("utf-8"); } catch (IOException e) {e.printStackTrace();}// 输出文档路径及名称 String fileName="讲座列表.doc"; response.setContentType("application/msword"); response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));//可防止导出的文件乱码response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();t.process(dataMap, out);out.close();}

Ⅲ java中用freemarker生成word文档时&字符出错,生成的word文档提示无法打开文档,内容有错误

用freemarker生成的word,在xml和html中如果包含下面这些特殊字符,就按后面的提示在Java代码中用replace()方法替换掉:

<替换为&lt;

>替换为&gt;

&替换为&amp;

"替换为&quot;

'替换为&apos;

如:替换&符号:

map.put("MaterialScience", point.getMaterialScience().replace("&", "&amp;"));

就可以了。

我是看了你的问题自己研究了小一个小时解决的,希望楼主问题解决了可以采纳。

刚开始玩"知道",不太会弄 ^_^

Ⅳ 用FreeMarker方法java生成word文档出现异常

应该是没有成功生成,内部代码里还包含了word无法识别的代码块,所以无法打开,你可以用记事本查看源代码,freenarker转换的word源代码都是xml格式

Ⅳ java使用freemarker生成word文档可以动态生成目录结构么

首先来,通过xml模板可以将基源本上所有的格式都事先锁定,包括页码和分页,只要你事先预设好就能够通过freemarker实现生成,接下来就是我这个问题了,目录怎么解决,下面是解决思路:1:目录的内容可以根据之前其他的内容一样解决,通过XML模板预先设置好,2:目录的页码已经研究过是不能直接通过xml模板实现动态对应了(至少我没搞定0.0)3:由于不能够一步到位,我采取了在模板中预留了一页空白页,只留了抬头的目录两个字,然后通过查询目录二字进行目录的生成,这个功能也是我刚刚折腾出来的0.0目前还没测试能不能用模板生成目录后再更新目录0.0,不过想想可以直接生成目录应该就不用这么麻烦了,至于word生成后的修改0.0我觉得还是以后再说吧…..整体来说应该还算完美解决了,代码我就不在这贴出来了~虽然中间折腾了半天走了半天弯路~讲道理还是用的jacob来实现的。。

Ⅵ java freemarker引擎 导出word文档

要生成的数据,在java后台必须是用Map格式,这个你检查一下有没有问题。如果有list,也要放到map里面去。

HashMap<String,Object>dataMap=newHashMap<String,Object>();Configurationconf=newConfiguration();Templatet=conf.getTemplate(fileName);FiledocFile=newFile(filePath+"/"+docName);out=newOutputStreamWriter(newFileOutputStream(docFile),"UTF-8");t.process(dataMap,out);

Ⅶ freemarker 怎么生成java jsp文件

运行机制就不大一样,jsp是编译成继承自servlet的class文件,运行jsp就是运行一个servlet而freemarker就是套模板,通过模板+内容直接生成HTML然后输出从开发角度来说freemarker 自带一套模板语言,语法实现更简单直观,而且可以通过marco宏编写控件,如果宏无法满足,freemarker也还提供了很多JAVA扩展接口。而JSP不管JSTL还是其他,都是靠taglib实现的,taglib的效率其实并不高,所以在复杂页面的渲染上 ,freemarker会明显高于jsp同时 ,freemarker也不仅仅局限于B/S应用,可以广泛应用到比如代码生成、票据打印模板等各个方面

Ⅷ 怎么利用freemarker自动生成javabean

Freemarker是一个模板框架。我们可以通过Freemarker进行代码生成或页面的静态生成。 现在简单的说一下怎样使用Freemarker Freemarker的主要生成类public boolean generate(String templateFileName, Map data,String fileName) {try {//取得模板的位置String templateFileDir=templateFileName.substring(0, templateFileName.lastIndexOf("/"));//取得模板的名字String templateFile=templateFileName.substring(templateFileName.lastIndexOf("/"), templateFileName.length());//取得生成文件的路径String genFileDir=fileName.substring(0, fileName.lastIndexOf("/")); Template template = ConfigurationHelper.getConfiguration(templateFileDir).getTemplate(templateFile); File fileDir=new File(genFileDir);org.apache.commons.io.FileUtils.forceMkdir(fileDir);File output = new File(fileName);if(output.exists()){//如何代码已存在不重复生成return false;} Writer writer = new FileWriter(output); template.process(data, writer);writer.close();} catch (TemplateException e) {e.printStackTrace();return false;} catch (IOException e) {e.printStackTrace();return false;}return true;}代码中的Map 是模板所需要的数据,我们可以通过面向对像的方法把数据存在模板中public boolean genDaoInterface(String fileName){DaoModel Model=new DaoModel();//设置Dao实现类的包名Model.setPackageName(DaoConstant.PACKAGE);//取得接口名String className=StringUtils.substringBefore(fileName,".");//设置接口名Model.setClassName(className);Map<String, Object> data = new HashMap<String, Object>(); data.put("model", Model);//设置生成的位置 String filePath=new String("src/"+package2path(DaoConstant.PACKAGE)+"/"+fileName);//代码生成 return super.generate(DaoConstant.INTERFACE_TEMPLATE, data, filePath);}data.put("model", Model);由这句代码可看出我们将可以在模板中直接调用这些数据package ${model.packageName};public interface ${model.className} extends BaseHibernateDao {}


赞 (0)