poi 替换word里的\n 变成 换行

10 篇文章 1 订阅

需求

poi库,将word里的\n变成换行,这样才能把数据库里有换行的数据原样复制到word里,使用了run.addCarriageReturn();回车符,但是不起作用,所以用的是run.addBreak();
参考stackoverflow

代码

public void forverseTableCells(String sourceFile, String targetFile) {
	XWPFDocument doc = new XWPFDocument(new FileInputStream(sourceFile));
    		for(XWPFTable table : doc.getTables()) {//表格
    			for(XWPFTableRow row : table.getRows()) {//行
    				for(XWPFTableCell cell : row.getTableCells()) {//单元格 : 直接cell.setText()只会把文字加在原有的后面,删除不了文字
    					addBreakInCell(cell);
    				}
    			}
    		}
	FileOutputStream fos = new FileOutputStream(targetFile);  
	doc.write(fos);  
     fos.close();  
     System.out.println("结束");
}

private  void addBreakInCell(XWPFTableCell cell) {
			if(cell.getText() != null && cell.getText().contains("\n")) {
				for (XWPFParagraph p : cell.getParagraphs()) {
					for (XWPFRun run : p.getRuns()) {//XWPFRun对象定义具有一组公共属性的文本区域
						if(run.getText(0)!= null && run.getText(0).contains("\n")) {
							String[] lines = run.getText(0).split("\n");
							if(lines.length > 0) {
								run.setText(lines[0], 0); // set first line into XWPFRun
				                for(int i=1;i<lines.length;i++){
				                    // add break and insert new text
				                    run.addBreak();//中断
//				                    run.addCarriageReturn();//回车符,但是不起作用
				                    run.setText(lines[i]);
				                }
							}
						}
					}
				}
			}
	}
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值