NPOI操作word表格插入换行符的方法

时间:2024-03-05 20:14:16

****NPOI 版本2.5.1.0****

在使用NPOI操作word的table 中的段落文字实现换行时,试了几种方法都没法奏效:

方法一:直接给单元格添加文本:"\n","\r\n"均无效

 

1 string file = @"test.docx";
2 Stream stream = File.OpenRead(file);
3 XWPFDocument doc = new XWPFDocument(stream);
4 var table = doc.Tables[0];
5 table.GetRow(1).GetCell(1).SetText("1234\n5678");
6 FileStream output = new FileStream(@"result.docx", FileMode.Create);
7 doc.Write(output);

方法二:使用段落属性,在段落中添加AddCarriageReturn,AddBreak均无效,但是发现AddCarriageReturn出现无法识别的□:

 1              string file = @"test.docx";
 2              Stream stream = File.OpenRead(file);
 3              XWPFDocument doc = new XWPFDocument(stream);
 4              XWPFParagraph p_result = doc.CreateParagraph();
 5              var table = doc.Tables[0];
 6              var run = p_result.CreateRun();
 7              run.SetText("1234\n5678");
 8              run.AddCarriageReturn();
 9              run.AddBreak();
10              run.AppendText("换行换行");
11              table.GetRow(1).GetCell(1).SetParagraph(p_result);
12              FileStream output = new FileStream(@"result.docx", FileMode.Create);
13              doc.Write(output);

 

 

 

 方法三:通过方法二发现AddCarriageReturn应该能够实现,只是npoi插入符号时候出现了某种bug的问题,偶然间发现鼠标光标放置在□处手动添加一个回车后,该换行付竟然被word识别了,于斯考虑新插入一个paragraph试试效果,完美解决!!!!

 1              string file = @"test.docx";
 2              Stream stream = File.OpenRead(file);
 3              XWPFDocument doc = new XWPFDocument(stream);
 4              XWPFParagraph p_result = doc.CreateParagraph();
 5              var table = doc.Tables[0];
 6              var run = p_result.CreateRun();
 7              run.SetText("1234\n5678");
 8              run.AddCarriageReturn();            
 9              run.AppendText("换行换行");
10              table.GetRow(1).GetCell(1).SetParagraph(p_result);
11              var run2 = table.GetRow(1).GetCell(1).AddParagraph().CreateRun();
12              run2.SetText(" ");
13              FileStream output = new FileStream(@"result.docx", FileMode.Create);
14              doc.Write(output);