java插入word换行符 java如何让word中文字换行

您所在的位置:网站首页 poi换行符 java插入word换行符 java如何让word中文字换行

java插入word换行符 java如何让word中文字换行

2023-06-04 20:40| 来源: 网络整理| 查看: 265

【踩坑笔记】java使用poi导出word文档换行

poi导出word,没有使用模板替换方式,而是设置创建paragraph和cell生成word。单元格内容填充的段落没有自动换行,原来换行是这么写的:

infoTableRow.getCell(1).setText(changeLine(entry.getValue()));/** * word表格内换行 * @param value * @return */ private static String changeLine(String value) { StringBuffer buffer = new StringBuffer(); if (value.indexOf("\n") > 0) { String[] strings = value.split("\n"); for (int i = 0; i < strings.length; i++) { if (i == 0) { buffer.append(strings[i].trim()); } else { buffer.append("\r\n"); buffer.append(strings[i].trim()); } } } else { buffer.append(value); } return buffer.toString(); }

java换行符“\n”在word文档中不生效,使用“\r”,“\r\n”,“(char)11”,“^p”,“< br>”,“”,“” 等替换均无法实现单元格内换行的功能(“\r\n”没有换行,但是有空格效果)。

实现单元格内自动换行:

String value = entry.getValue(); // 设置单元格内段落 XWPFParagraph contentParagraph = infoTableRow.getCell(1).getParagraphs().get(0); XWPFRun run = contentParagraph.createRun(); setWrap(value, contentParagraph, run);/** * 设置换行 * * @param value 需要换行的内容 * @param paragraph 当前段落 * @param run */ private static void setWrap(Object value, XWPFParagraph paragraph, XWPFRun run) { if (((String) value).indexOf("\n") > 0) { //设置换行 String[] text = value.toString().split("\n"); run = paragraph.insertNewRun(0); for (int f = 0; f < text.length; f++) { if (f == 0) { run.setText(text[f].trim()); } else { // run.addCarriageReturn();//硬回车 // 换行 run.addBreak(); run.setText(text[f].trim()); } } } else { run.setText((String) value); } }

单元格cell相当于一个小的document。原始代码中使用setText()方法填充内容,为了实现分行效果修改为paragraph。addCarriageReturn依然没有实现单元格内分行的效果(单元格外可以),更改为addBreak()分行正常。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3