昨天在使用poi-tl 生成Word文档时,发现换行符“\n”失效,变成了空格。以前使用时,没有出现过这种现象。

StringBuilder res = new StringBuilder();

        //获取当前系统支持的换行符
        String line = System.getProperty("line.separator");

        for (int i = 0; i <5 ; i++) {
            res.append("第").append(i+1).append("行").append(line);
        }

        return res.toString();

  生成的Word文档,换行符变成了空格。

java 导出world转义符 java导出word换行_换行符

 

之后我尝试用两个换行符,还是不行。

res.append("第").append(i+1).append("行").append(line).append(line);

java 导出world转义符 java导出word换行_换行符_02

 当我在文档里手动里加回车换行时,发现换行符有3个,这说明程序加的两个换行符没问题,只是Word没有触发。

 

java 导出world转义符 java导出word换行_java 导出world转义符_03

猜测这个模板可能有问题,但不知道问题在哪?换模板不现实。

期间在网上搜索,并没有找到解决办法。

后来,我想了想,如果我手动在模板处加换行符,生成Word时,该模板已有换行效果,应该能正常生成换行效果。

加在前面,发现不行

java 导出world转义符 java导出word换行_换行符_04

 

加在后面,可以

java 导出world转义符 java导出word换行_生成word换行符变成空格_05

 

附上模板

java 导出world转义符 java导出word换行_换行符_06

 

这只是一个解决办法。

由于显示效果不太好,我又改了下模板和代码。 

 

 

java 导出world转义符 java导出word换行_生成word换行符失效_07

 

StringBuilder res = new StringBuilder();

        //获取当前系统支持的换行符
        String line = System.getProperty("line.separator");
        res.append(line);
        for (int i = 0; i <5 ; i++) {
            res.append("第").append(i+1).append("行").append(line);
        }

        return res.toString();

java 导出world转义符 java导出word换行_换行符_08

 

 

至此解决。