poi 替換word裡的\n 變成 換行
阿新 • • 發佈:2018-11-07
需求
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]); } } } } } } }