在写入XWPFTable单元格时忽略Java Apache POI换行符

在写入XWPFTable单元格时忽略Java Apache POI换行符,java,apache-poi,Java,Apache Poi,希望有人对此有经验。我正在使用ApachePOI3.8b4以Word 2007格式输出一个表。当我做类似于以下的事情时: XWPFTableRow row = table.getRow(0); String text = "A\nB\nC\nD"; row.getCell(i).setText(text); 在表格单元格的输出中,我的所有换行符都被忽略,如下所示 A B C D 有人知道如何将其正确显示为 A B C D 编辑: 解决办法如下: XWPFParagraph para = r

希望有人对此有经验。我正在使用ApachePOI3.8b4以Word 2007格式输出一个表。当我做类似于以下的事情时:

XWPFTableRow row = table.getRow(0);
String text = "A\nB\nC\nD";
row.getCell(i).setText(text);
在表格单元格的输出中,我的所有换行符都被忽略,如下所示

A B C D
有人知道如何将其正确显示为

A
B
C
D
编辑: 解决办法如下:

XWPFParagraph para = row.getCell(i).getParagraphs().get(0);
for(String text : myStrings){
    XWPFRun run = para.createRun();
    run.setText(text.trim());
    run.addBreak();
}

你试过添加多个段落吗

尝试以下方法:

XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("A");
run.addBreak();
run.setText("B");
run.addBreak();
run.setText("C");
document.write(OutPutFilePath);
试着这样做:

for(String text : myStrings){
XWPFParagraph para = row.getCell(i).getParagraphs().get(0);
XWPFRun run = para.createRun();
run.setText(text.trim());
run.addBreak();
}试试这个:

String text = ".. ... some text with line breaks... ...";
String[] textLines = text.split(System.lineSeparator());
for(String s : textLines) {
  run.setText(s);
  run.addBreak(BreakType.TEXT_WRAPPING);
}

你试过了吗?或者System.properties(“line.separator”)?除非我误解了这一点-您是在一行中添加单元格,所以它们将位于4个相邻单元格中。对于您试图执行的操作,您需要为每个字符创建一个新行。如果您在Word中执行相同的操作,它会为单元格生成什么XML?它只是做文字换行,还是做一些像单元格中的多个段落这样的花哨的事情?请澄清,我们正在尝试向一个表中添加4个垂直单元格,或者向单个单元格添加4行文本?@JohnB是的,我尝试了这两种方法。我试图在一个单元格中添加4行文本。我怀疑增加新的段落会起作用,并会给它一个机会@Gagravarr查看xml,似乎软返回添加了一个带有
元素的新运行,而crlf似乎添加了一个新段落。我实际上想要一个软中断,所以我需要获取现有段落,添加一个运行,然后在运行中添加中断,但这基本上让我走上了正确的道路。这段代码帮助我添加了文本
String text = ".. ... some text with line breaks... ...";
String[] textLines = text.split(System.lineSeparator());
for(String s : textLines) {
  run.setText(s);
  run.addBreak(BreakType.TEXT_WRAPPING);
}