gpt4 book ai didi

java - 使用apache POI在word文件生成中保留换行符

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:20 25 4
gpt4 key购买 nike

我正在尝试使用apache POI通过收集数组列表中的一些数据然后将其打印在控制台输出以及word文件中来动态生成word文件。我能够在控制台和单词文件中获得输出,但在每个 arraylist 元素内,我在末尾添加了一个新行字符,以便按行打印数组元素。在控制台输出中,新行字符有效,即数组列表元素按行排列,但在生成的单词文件中缺少换行符。如何在生成的单词文件中保留换行符并删除数组元素末尾的逗号。注意:arraylist 是“result”,“isLinkBroken(new URL(element.getAttribute("href")))”是一个返回某个值的函数。相关代码片段如下:

protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {
String url= request.getParameter("url");
System.setProperty("webdriver.chrome.driver", "H:\\suraj\\sftwr\\chromedriver_win32\\chromedriver.exe");
ChromeDriver ff = new ChromeDriver();
ff.get("http://"+url);
ArrayList result = new ArrayList();
List<WebElement> allImages = findAllLinks(ff);
int i=0;
System.out.println("Total number of elements found " + allImages.size());
for( WebElement element : allImages){
try {
if(!isLinkBroken(new URL(element.getAttribute("href"))).equals("OK")) {
i++;
System.out.println("inside"+i);
System.out.println("URL: " + element.getAttribute("href")+ " returned " + isLinkBroken(new URL(element.getAttribute("href"))));
result.add(i+" URL: " + element.getAttribute("href")+ " returned " + isLinkBroken(new URL(element.getAttribute("href")))+"\n");
}
}
catch(Exception exp) {
System.out.println("outside");
System.out.println("At " + element.getAttribute("innerHTML") + " Exception occured -&gt; " + exp.getMessage());
}
}
System.out.println("OUTPUT");
System.out.println(result.toString());
FileOutputStream outStream=new FileOutputStream("H:\\suraj\\InactiveURL\\test.docx");
XWPFDocument doc=new XWPFDocument();
XWPFParagraph para = doc.createParagraph();
para.setAlignment(ParagraphAlignment.LEFT);
XWPFRun pararun=para.createRun();
pararun.setText(result.toString());
doc.write(outStream);
outStream.close();
}

最佳答案

Word .docx 格式不会将换行符(也不会像制表符一样的其他空格分隔符)编码为其 native ascii 表示形式。相反,您需要为这些使用额外的 XML 标记

如果你看JavaDocs for XWPFRun ,您将看到所有空格分隔选项,例如 XWPFRun.addTab()XWPFRun.addCarriageReturn()

有一个good example in the XWPF examples您应该仔细阅读。基本上,获取文本

This is line one
This is line two

并使用 XWPF 将其编码为 .docx,您应该执行类似的操作

XWPFParagraph p1 = doc.createParagraph();
XWPFRun r1 = p1.createRun();

r1.setText("This is line one");
r1.addCarriageReturn();
r1.setText("This is line two");

如果您从一段文本开始,则应将其拆分为换行符。接下来,使用单独的 run.setText 调用添加每个分割线,并在每个分割线之间执行 run.addCarriageReturn

关于java - 使用apache POI在word文件生成中保留换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com