http://hi.baidu.com/xckouy/item/c6b6024fcafc2bac61d7b9d5 java根据模板自动生成文档数据换行操作

分享到
  • 一键分享
  • QQ空间
  • 新浪微博
  • 百度云收藏
  • 人人网
  • 腾讯微博
  • 百度相册
  • 开心网
个人 让懂的人懂 不懂的人不懂 让世界依旧是世界 我甘心 我是我自己
2013-04-03 10:44

FreeMarker导出word文件,\n换行无效的问题解决记录

目前开发的系统中,用到了freemarker导出画面上的内容到word文档。

发现\n换行无效,变成了空格。

首先,怀疑java写word文件有问题,用下面代码试了一下,正常。

1
2
3
4
5
6
7
8
9
File outFile =  new  File( "D:/mine.doc" );
Writer out1 =  null ;
try  {
        out1 =  new  BufferedWriter( new  OutputStreamWriter( new  FileOutputStream(outFile),  "UTF-8" ));
        out1.write( "test1\r\ntest2" );
        out1.close();
  catch  (Exception e) {
        e.printStackTrace();
  }


看了半天的freemarker源码,没有收获。

后来发现模板文件中用到了table,是不是这个问题。果然。

换行符(\r\n)在word的table表格中会被输出成空格,但在普通的word文件中会正常显示。

所以,在模板文件中针对可能换行的字段进行了\n的替换处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"003F5617"  wsp:rsidRPr= "003F5617"  wsp:rsidRDefault= "003F5617"  wsp:rsidP= "003F5617" >
"left" />
"SimSun"  w:h-ansi= "SimSun" />
"SimSun" />
"22" />
"003F5617" >
"SimSun"  w:h-ansi= "SimSun" />
"SimSun" />
"22" />
责任描述:
"004B3F82" >
"SimSun"  w:fareast= "宋体"  w:h-ansi= "SimSun"  w:hint= "fareast" />
"SimSun" />
"22" />
${ex.responsibility?replace( "\n" , "" )}

${ex.responsibility?replace("\n","")}   关键语句

在office2003、2007下试了下,OK~!

你可能感兴趣的:(java)