public static void newLine3() throws Exception {
String dot = "/data/tem/abd.docx";
String t1 = "/data/tem/xyz.docx";
String t2 = t1;//"/data/tem/xyz2.docx";
Map<String, Object> datas = new HashMap<String, Object>() {
{
put("param1", "参数1的内容\n换行\nAAAAAAA\nbbbbbb\ncccccc\n中午好");
//put("param2", "参数2的内容" + (char) 11 + "换行");
put("param2", "参数2的内容\n换行");
put("param3", "参数3的内容\n换行");
put("param4", "参数4的内容\n换行");
//本地图片
//put("img1", new PictureRenderData(100, 120, "/git/1.jpg"));
}
};
XWPFTemplate template = XWPFTemplate.compile(dot).render(datas);
FileOutputStream out = new FileOutputStream(t1);
template.write(out);
out.flush();
out.close();
template.close();
wordNewLine(t1, t2);
}
/**
* 换行方法
*
* @param wordPath word模板的地址
* @param wordOutPath 换行后输出word的新地址
*/
public static void wordNewLine(String wordPath, String wordOutPath) {
//获取文档doc
XWPFDocument doc = null;
try {
doc = new XWPFDocument(new FileInputStream(wordPath));
} catch (IOException e) {
e.printStackTrace();
}
//遍历所有表格
for (XWPFTable table : doc.getTables()) {
for (XWPFTableRow row : table.getRows()) {
for (XWPFTableCell cell : row.getTableCells()) {
//单元格 : 直接cell.setText()只会把文字加在原有的后面,删除不了文字
addBreakInCell(cell);
}
}
}
try {
doc.write(new FileOutputStream(wordOutPath));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 匹配单元格内容\n 替换为换行
*
* @param cell
*/
private static void addBreakInCell(XWPFTableCell cell) {
String cell_s = cell.getText();
if (cell_s != null) {
System.out.println(cell_s);
if (cell_s.contains("\n")) {
System.out.println("------------------------------> you n");
for (XWPFParagraph paragraph : cell.getParagraphs()) {
paragraph.setAlignment(ParagraphAlignment.LEFT);
for (XWPFRun run : paragraph.getRuns()) {
//String runs = run.toString();
String runs = run.text();
if (runs.contains("\n")) {
String[] lines = runs.split("\n");
if (lines.length > 0) {
run.setText("", 0); //必须的 //清空原先文本,使用换行后的新文本
run.setText(lines[0], 0);
for (int i = 1; i < lines.length; i++) {
run.setText("", i); //必须的 //清空原先文本,使用换行后的新文本
run.addBreak();
run.setText(lines[i]);
}
}else{
run.addBreak();
}
}
}
}
}
}
}
poi Word 模板替换 表格内不换行问题
于 2023-05-03 16:54:46 首次发布