用WPS打开Freemaker动态生成的word文档只显示xml内容

dafeifeijiji 2014-01-09 11:18:31
公司开发的web项目需要导出word,上网搜索后选择Freemarker来实现这个功能。
1、首先用微软的word2003新建一个模板,另存为xml格式,将后缀名xml修改成ftl
2、然后freemarker加载这个ftl模板,动态生成word(成功,没有出现问题)
3、用微软office能够完美显示整个word内容,但是用wps(金shan)打开这个word,却显示的是xml的内容
xml的内容如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no"</o:CustomDocumentProperties><w:fonts><w:defaultFonts w:ascii="Times New Roman" w:fareast="宋体" w:h-ansi="Times New Roman" w:cs="Times New Roman"/><w:font w:name="宋体"><w:altName w:val="SimSun"/><w:panose-1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="080E0000" w:usb-2="00000010" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font><w:font w:name="@宋体"><w:panose-1 w:val="02010600030101010101"/><w:charset w:val="86"/><w:family w:val="Auto"/><w:pitch w:val="variable"/><w:sig w:usb-0="00000003" w:usb-1="080E0000" w:usb-2="00000010" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/></w:font></w:fonts><w:styles><w:versionOfBuiltInStylenames w:val="4"/><w:latentStyles w:defLockedState="off" w:latentStyleCount="156"/><w:style w:type="paragraph" w:default="on" w:styleId="a"><w:name w:val="Normal"/><wx:uiName wx:val="正文"/><w:pPr><w:widowControl w:val="off"/><w:jc w:val="both"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:kern w:val="2"/><w:sz w:val="21"/><w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="1"><w:name w:val="heading 1"/><wx:uiName wx:val="标题 1"/><w:basedOn w:val="a"/><w:next w:val="a"/><w:pPr><w:pStyle w:val="1"/><w:keepNext/><w:keepLines/><w:spacing w:before="340" w:after="330" w:line="576" w:line-rule="auto"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><wx:font wx:val="Times New Roman"/><w:b/><w:kern w:val="44"/><w:sz w:val="44"/></w:rPr></w:style><w:style w:type="character" w:default="on" w:styleId="a0"><w:name w:val="Default Paragraph Font"/><wx:uiName wx:val="默认段落字体"/></w:style><w:style w:type="table" w:default="on" w:styleId="a1"><w:name w:val="Normal Table"/><wx:uiName wx:val="普通表格"/>


由于公司的电脑只能安装WPS,不能安装微软的office,于是采取另一个方法。
1、WPS新建一个word文档,然后另存为mht格式,然后用记事本打开,修改freemarker动态加载的数据项,然后保存
2、然后freemarker加载这个mht模板,动态生成word(今次用WPS打开,能够显示word内容,但是word的排版很乱,与原来自己设定word排版相差很大)


问题:
1、在继续使用freemarker的前提下(暂时不用jacob,itext,java2word),能否解决word在wps兼容问题(WPS打开时不再显示xml内容)?
2、freemarker除了支持mht、ftl模板外,还能够支持其他格式的文件模板吗?


希望各位前辈能够多多指点,不甚感激!
...全文
1052 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
i01o 2016-04-22
现在也碰到了这个问题,wps打开ms2003,之后转存为word xml格式,再转成ftl,生成的word wps完美打开,可是ms2003打开是代码,现在看到楼主碰到的麻烦,在考虑是不是也换个方法了,楼主能提供下jacob的资料吗,虽然时间很久了
回复
i01o 2016-04-22
引用 9 楼 october_me 的回复:
引用 7 楼 wezit 的回复:
都2015年了 这个帖子现在还有回复的么 我用word生成的xml 然后用静态模版操作生成word----但是在wps打开的时候打开的是那一堆xml的信息 这个有解决方案么
wps打开xml应该是另存为xml时选择问题如果选择【word xm 文档】那么wps打开就是xml代码,所以另存xml时要选择【word xml 2003 文档】;
转xml的时候没有楼上所说的【word xml 2003 文档】选项啊
回复
奕空 2015-09-17
引用 7 楼 wezit 的回复:
都2015年了 这个帖子现在还有回复的么 我用word生成的xml 然后用静态模版操作生成word----但是在wps打开的时候打开的是那一堆xml的信息 这个有解决方案么
wps打开xml应该是另存为xml时选择问题如果选择【word xm 文档】那么wps打开就是xml代码,所以另存xml时要选择【word xml 2003 文档】;
回复
奕空 2015-09-17
目前我也在用,说下我的看法: 1.wps打开xml应该是另存为xml时选择问题如果选择【word xm 文档】那么wps打开就是xml代码,所以另存xml时要选择【word xml 2003 文档】; 2.生成word文档时后缀如果是docx有可能出现损坏无法打开的现象,所以后缀要是.doc才行。 目前了解这么多,另外据客户现场反馈他们那个版本的wps打开就就代码,而我们本地测试是正常的,有待进一步跟进此问题,考虑可能是兼容问题吧。ing
回复
wezit 2015-09-01
都2015年了 这个帖子现在还有回复的么 我用word生成的xml 然后用静态模版操作生成word----但是在wps打开的时候打开的是那一堆xml的信息 这个有解决方案么
回复
HiTomcat 2014-08-27
楼主可否告诉我怎样修改那个mht文件的。谢谢!
回复
dafeifeijiji 2014-01-13
引用 3 楼 net_lover 的回复:
如果你只是在页面上显示,你可以转成swf格式或者pdf格式, 如果要离线观看,那么你还可以使用Apache POI试试
谢谢版主的热情帮助。我最后放弃用freemarker,选择用jacob了。
回复
孟子E章 2014-01-11
如果你只是在页面上显示,你可以转成swf格式或者pdf格式, 如果要离线观看,那么你还可以使用Apache POI试试
回复
dafeifeijiji 2014-01-10
引用 1 楼 net_lover 的回复:
你看看wps是否支持xml格式的文档而不是直接当成文本文件打开。
谢谢你的回复 公司用的wps版本不支持xml格式,而且公司不是每台电脑都装有office
回复
孟子E章 2014-01-09
你看看wps是否支持xml格式的文档而不是直接当成文本文件打开。
回复
发动态
发帖子
其他
创建于2007-09-28

1.0w+

社区成员

Web 开发 其他
申请成为版主
社区公告
暂无公告