『壹』 java poi操作2007word,輸入什麼代表換行符
悄悄問了問度娘,她說按下面方式做就ok了:
1. 首先在需要強制換行的單元格里使用poi的樣式,並且把樣式設定為自動換行
# HSSFCellStyle cellStyle=workbook.createCellStyle();
# cellStyle.setWrapText(true);
# cell.setCellStyle(cellStyle);
2. 其次是在需要強制換行的單元格,使用\就可以實再強制換行
1. HSSFCell cell = row.createCell((short)0);
2. cell.setCellStyle(cellStyle); cell.setCellValue(new HSSFRichTextString("hello\r\n world!"));
這樣就能實現強制換行,
換行後的效里是單元格里強制換行
hello
world!
『貳』 poi - Word合並單元格,拖動之後還原問題
在處理Word文件時,發現合並單元格後,拖動單元格會導致合並恢復原狀,這個問題困擾了許多用戶。實際上,解決這個問題的關鍵在於理解Word文件的內部結構。
一種簡便的方法是將文件另存為XML格式,從而揭示文檔結構。在轉換成XML格式後,可以觀察到單元格相關的代碼。
對於代碼中出現的`cell.getCTTc().addNewTcPr()`,初看可能難以理解,但通過觀察XML格式,可以大致推斷其作用。
回到原問題,為何拖動後單元格會還原?答案在於合並操作並未真正刪除單元格,只是改變了它們的顯示狀態。因此,合並後的單元格中依然包含`w:r`標簽。為解決此問題,只需在代碼中添加一兩行,清除多餘的`w:r`標簽,即可實現預期效果。
『叄』 怎樣用poi在word中生成表格
在使用POI庫生成Word文檔中的表格時,關鍵的代碼步驟包括:
首先,打開一個現有的Word文件,通過FileInputStream讀取文件,並使用POIFSFileSystem解析文件內容,再創建一個HWPFDocument對象。接著,通過OutputStream將修改後的文檔內容寫入到新的目標文件中。
具體代碼如下:
FileInputStream fileInputStream = new FileInputStream(soureFile);
POIFSFileSystem pfs = new POIFSFileSystem(fileInputStream);
HWPFDocument hwpf = new HWPFDocument(pfs);
OutputStream output = new FileOutputStream(targetFile);
hwpf.write(output);
output.close();
在插入表格的具體操作上,可以使用insertTableBefore方法,通過參數設置列數和行數。接著,可以通過遍歷行和列來設置具體單元格的內容:
Table tcDataTable = range.insertTableBefore((short)column, row);
tcDataTable.getRow(i).getCell(j).getParagraph(0).getCharacterRun(0).insertBefore("插入i行j列的內容");
使用XWPFDocument創建表格的方法略有不同,可以先創建一個XWPFDocument對象,再通過createTable方法創建表格。設置單元格內容時,可以使用setText方法直接填寫。例如:
String outputFile = "D:\\test.doc";
XWPFDocument document = new XWPFDocument();
XWPFTable tableOne = document.createTable();
XWPFTableRow tableOneRowOne = tableOne.getRow(0);
tableOneRowOne.getCell(0).setText("11");
XWPFTableCell cell12 = tableOneRowOne.createCell();
cell12.setText("12");
此外,還可以通過createRow方法創建新的行,並通過addNewTableCell方法添加新的單元格,並使用setText方法設置其內容。最後,將文檔寫入到目標文件中:
FileOutputStream fOut;
try {
fOut = new FileOutputStream(outputFile);
document.write(fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}