近期公司项目有个把文本转成word文档的功能,开始使用io操作输出文件的方式(后缀名是docx),使用手机自带的文档浏览工具打开是没有问题的,但是在电脑上用微软office就打开有问题了,于是找了三方的Apache / poi生成word,这时坑又来了,文本见如果有换行符\n,生成word文档之后,在手机上都是媒体的,但是在电脑上打开就没有换行,然后使用\r\n组合也不行,最后查看api使用run.addCarriageReturn()硬回车的方式处理之后都能正常显示了代码如下
public void createWord(String value) throws Exception {
// 创建Word文件
XWPFDocument doc = new XWPFDocument();
// 新建段落
XWPFParagraph p = doc.createParagraph();
// 设置段落的对齐方式
p.setAlignment(ParagraphAlignment.LEFT);
XWPFRun run = p.createRun();
if (value.indexOf("\n") > 0) {
//设置换行
String[] text = value.split("\n");
for (int i = 0; f < text.length; i++) {
if (i != 0) {
run.addCarriageReturn();//硬回车
}
run.setText(text[i]);
}
} else {
run.setText(value);
}
OutputStream os = new FileOutputStream(Environment.getExternalStorageDirectory() + "/test.docx");
doc.write(os);
os.close();
}