版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于 Freemarker生成 word 的使用(java 生成 word)用freemarker做了一个项目,把使用心得留下来以便学习. Freemarker具体的是什么就不解释了,不明白的同学可以baidu.我主要是用这个开源的控件做 word的动态生成,首先客户需要的word 一般性都有模板,我们只要改动其中的一部分值就可以 了,比如姓名,日期,表名,表中数据等.第一步要做的就是,把着些要改动的地方找出 来,打上标记.比如一个X或者随便的什么,好方便自己查找.第二步就是把word模板,转化为xml文件(word可以另存为xml的),用UE 等工具打开,eclipse也可以,注意字符编码,
2、word的字符编码为utf-8,所以打开是最 好是先不要改动,先看编码是否正确(不正确的改下字符编码),然后寻找你刚才在 word中留下的标记,把他们换成freemarker标记.-友情提醒,eclipse可以自动排 版 xml.比如把姓名换成$username,日期换成$date,等至于表格,因为是,xml所以 是可以找到表结构的.例如Word是这样的沟通函尊敬的总蛭理XX七4出忙:你誓这是一N先蚩文档附表1:逍是第一个表|)0弔孤片)a H即位:XX A方E1RAA-JJJL&UAA3011-00SOTO 天XMl是这样的:vrx:va 1""Uftt3 13
3、w / > :vrbH! Vft 1*28* / ><W2 3E-C3/ >Z:w:吓尊IUIIExx gg/ w »< v; rxtr: r Pr> < w r £ Fg At a vsacii"vil#MGB2312,K vs l&reaflt*12": hint/>< v sc; fontIWX:V® 1 *"Hf1t2312s* /XVIUE w:val"rts* /xvj 3E-C> wsveil*"®* Au wzrpr -;
4、-女士/先生 / if: p/ v S p>< w: H AYu ; r Pf ><wi rFas ; CLScm啊12* :fa±ea3t-12.wsihLiicXAreast*p /xvx:£oncws s12r /xvib /xwjsew : V>1v2 >E-v: Vii4 w,*i!0it / >/ W f P Is > <w:; < / U1: V :jf * : H 学/«: p><v : p>v: pFr>< wi Eai3S><w:t SJ&am
5、p; H: val*-le£t *" tfzfh&ai* "7260" />/wEtnhsxu:rFT><M?rrcrs w;jbscii-"H23t 12* n:f®reast-*1tfM4B2312*r:hint;""ferewe" /><««:rent X :Val""JHtttGBJ3 12 w / ><wjb f><v: rz :3H-c =/Vi&Lr*2右纣 />/w:rPr&
6、gt;/!; j-fPr - W;I ><«: tFr><«;rF - n* r ift 9L8C1 ! "ft-ft GB2 312" Vt fareaut "tilIt GBZ312"ii:ftreagC *" /Xvx ; fontwx:Vfcl312* />cwiu /><v£0xn:veiI*"iS" >ui*x-cs/>/w:rPt:电A 撷T送整一于实諏特"; /w:p><v<wi 6>Prxw
7、t i;nd wefirat-line-c-hars-ZOO*rPc> s wtrFontsM!«Meii"T,1fHit GB2312" r! fax east" "WttGBia 12 " sare<st* 丿wu ;v»X "UfttJ312 *f / > c11: /w? 3=if:(I*1 t . :wz:w:/:><w:一般是这么做的,先把表格外面的数据都替换了,每个标记不相同就行比如 d-d A |4 V 4 Ufa. IUU4W V f * > w rt. f l
8、-Hlbrwx; va 1 *p4&ffr_GB2 J 12 */><v:*="23" /><m;5E-cra u:valfc"Z8" /></v:rPr><v :i的尊经©f name厂: t ;!</w:r><: r><w:rP: :-:UllMul l312 v:fareaat "fffGBZ3 1w: hiut*,Ffareast*f / xv.: fontvx :va 1-JF«&ft_GB221£ * />
9、;<u:sz w:val-ft2e*f /> wfval-iS* 7></v; j;Pr ><u : t > 文士/先</ u;L < IT: 1 ; U; lFexu; tFjtdt-. V: MC11* &_062 312 W tr"辜"楷体 _G就 3 1v: hincfekteASt" /><ux; fiontux: val*"4feft_GB2 3 12 " /xu ;) / ><u: 5Z w:Vftl-"28ff /><w:
10、33-cs uival-ZB />/ ! rPr><u: t>:</i.i j c>接下来是表格:表格应为是重复的多条数据所以可以这么来:在表格的开头(表头之下,数据开始的地方)打上标记:Pl在结尾在打上标记IVn W I:k/XneEfonc替换表里的每个字段E« ivs trf r> < v; t r He i' >w:.Tiri u: /<V?! *1 ; H* 1 IS * JH T ypc * "to*"UP : Lr .MJC-jyivsval-*®lngleH :bdiw:
11、3pwe*0*v-c&ler-OCMJOCiQ"? tcSorcr 9 >< v ; aVelclcaf11 * t co lor ""aut o-/ a盂倉孑口口貫越卩vAl ljrne/v e KePr»<wx(i> < v a >Pr> cite frawFE wi* 1 sd*v:vanehor*"text- vshajLclir""Mzgla":1" /><vsiJaCenttolv:v«l"*c»nle
12、r" />£ : c Pr>»s 4 >' itt -v:工匚1 y 霍悻 * hx itLftnjl*1* 电悔務 a; font¥Mi myiVftJwOQQQQQ" -y : Xj j./xvx: Cul i4FM.lViL* l'S?1:f *< U ! £ c L - LwsValO&GOOO- " >< vsk81! ne/ : igx*« cc>-<v p<*»t-tWufi* -Vp,t,viPt,*ciKftl
13、B f><*4 itPfiiifMt*><* %q>3E Vwl*!" / >< J 5 e - ? a Ikf m />/><w; ss ¥svftlB",liw /><«i SE-esIfZ Art l*e£t U!余脣之崛 WKfbdruidt.M-lCi* irsspe-O- w;Ur- "OOOOOO" irsv*!-*tngi J.«s c豊戟*4* vx st)dr vidxhvPrilQH w: jp*ct"*QlT&
14、#165; s cn 1 or "DOiODOO " <u: r iglii/ >< : Bm#rfr :v w; rFontfl null.宋It * ch-us i* t:S| " ihc-e.金詣WJVIil»"nl.l.* /><«: 1«£1; «JV«1HWD11* /XwZbQ'L'E.Qiawt h* p-bcf" " 1BC w *: -tfz ftp-*fct a un>d "virfh*tb0
15、ir*',H'iVM|tn Vb hw>t b4ir*<*,Bwri4rln,H w: y* 1* * /xwe r Prw: r F口nE n刑 SBC14求W:fa- AM" 1H"竜It吟irjcvalSit* /><wseolorri 暂 siZ-.mOMO"1/><tf £ JtE B.Vt iU 亡«: b - *QJi 1 it±hint" />ok:f<sm mu& />*!:G&tflr wval-OWOW* /Hiwjk
16、srn* jwm 白甲irs:vat*IB"1 / >/ ><w; SE-匚一7>u,ibiM*,*r*rtMt:,IF1 nntme: val* "IK JJI131Z ><v£bWiWibl*2aHi /JitwiiE faigl- />,TW*s r.:. I.-Jir: MCii-t>_«3»3312* *sf|prfFl *it * V: bihC"R£ihEeastrfrSl-K GU311" /><w:b />CV:BE<rPr?
17、<wiFiFonc 3GIl2)12* ve f«rrucH"Mi# G>Z31T!然后保存:我的xml的保存文件名叫test2.xml.等下会用到这个 接下来开始写程序:首先你要有这些;就是freemarker的开源包,百度一个,导入就好,import freemarker.template.Co nfigurati on;import freemarker.template.Template;import freemarker.template.TemplateExcepti on;接下来这么做目录:TheFreemarker: - : W;V3Y1 i Z
18、1L<1 w idCW 3 I UQ11: IV !>£ " 4* nt lkld£ «ld< fa.*" 10" *3 3> t vi! r i jlhc叩呼vJiff; g1 p 祜电v i cfllarsOOOMO".val*"QDOOOO" / > v j k* sl$ I n=!V . pplvn' Iill 11 JRE System Libr ary jEsdkl. 4. - freemarker2, 3-13- j ar " D: wo L_
19、J Documenti砂n.1£>cvj1:普1"1£70"1 />/cccPr><»iccF nc芒曲血KlLtL Eilei ' : i»E-!iJ !瞽亡丄电鼻E* W1 E11 ll«*sut* -r«JBiC!>t2 t f P c < W : t- :. If: JiFj WifE w r tt : K? f-Ml Pfcf "fluf OUdM-W 1 VfiJi J li£>E - * E. r Kt *LBd.L |LEi&qu
20、ot;1*3veI*"ccfsner /><irli Pz >x#L*3 ff z tlsve l*'ie ;*2 I丫 豐 t(#3 111 nt -* / >4: «: ; f CHX i V'ft-t ": -, t-£j. modelK test. xmltest2. xmlimportimportimportimportimportimportjava.io.BufferedWriter;java.io.File;java.io.FileOutputStream;java.i o.I OExcepti o
21、n;java.io.OutputStreamWriter;java.io.Writer;=心轄d兔裁旺i E-® >rc三t r (default package)ppS-|J Pptest javi Tabla?, j ava Theyretmarker. j aviimport import import importjava.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map;import import importfreemarker.template.Configuration;freema
22、rker.template.Template;freemarker.template.TemplateException;public class TheFreemarker private Configuration configuration = null ;public TheFreemarker() configuration= new Configuration();configuration.setDefaultEncoding("UTF-8" );public void createDoc() / 要填入模本的数据文件Map dataMap =new Hash
23、Map();getData(dataMap);/ 设置模本装置方法和路径/ 这里我们的模板是放在 src.model 包下面 configuration.setClassForTemplateLoading(this .getClass(),"model" );Template t =null ;try t = configuration .getTemplate( "test2.xml" ); / 装载 test2.xml 模板 catch (IOException e) e.printStackTrace();/ 输出文档路径及名称File outF
24、ile =new File( "D:/outFileDoc.doc" );Writer out =null ;try out = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(outFile), "utf-8" ); catch (Exception e1) e1.printStackTrace();try cess(dataMap, out); catch(TemplateException e) e.pri ntStackTrace(); catch(IOE
25、xception e) e.pri ntStackTrace();/*注意dataMap里存放的数据Key值要与模板中的参数相对应* param dataMap*/private void getData(Map dataMap) dataMap.put( "name","小新与小白");/姓名xml里的标记为$namedataMap.put( "Tdate" ,"2011-12-02"); / 时间 xml 里的标记为 $TdatedataMap.put( "address" ,"北京海淀区 ”);/ 时间 xml 里的标记为 $addressList table2 =new ArrayList();for ( int i = 0; i < 5; i+) Table2 t = new Table2();t.setAppl yno( t.setCust name( t.setLoa ndate( t.setRegi on( table2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 涤棉手套行业深度研究报告
- 卫东环保2024年决策水平分析报告-图文
- 2025借款合同条例范文
- 2024年煤炭工业节能减排行业发展趋势及投资前景预测报告
- 中国基础软件服务行业发展潜力分析及投资战略研究报告
- 十年高考真题(2014-2023)分项汇编 化学 专题74 基本营养物质 含解析
- 中国腹腔镜行业市场发展监测及投资方向研究报告
- 徽田紫香米 精米加工可行性研究报告
- 2019-2025年中国电教器材市场供需格局及未来发展趋势报告
- 2025商品房装修工程合同
- 微型顶管施工方案
- 湘教文艺版小学五年级音乐上册期末测试题
- 老化箱点检表A4版本
- 略说鲁迅全集的五种版本
- 2022年110接警员业务测试题库及答案
- 中联16T吊车参数
- DB44∕T 115-2000 中央空调循环水及循环冷却水水质标准
- 嵌入式软件架构设计
- 《石油天然气地质与勘探》第3章储集层和盖层
- 航道整治课程设计--
- 超星尔雅学习通《科学计算与MATLAB语言》章节测试含答案
评论
0/150
提交评论