DOCX 生成:POI OOXML 修剪字符串中的空格
我正在尝试使用 poi-ooxml 生成 docx 文档。以下代码几乎生成了我想要的文档,但由于某种原因,它从文本中删除了结束和开始空格。
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun para1run1 = paragraph1.createRun();
para1run1.setText("Dette er ein tekst med space på slutten. Den har ein ");
XWPFRun para1run2 = paragraph1.createRun();
para1run2.setText("utheva tekst");
para1run2.setBold(true);
XWPFRun para1run3 = paragraph1.createRun();
para1run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");
XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun para2run1 = paragraph2.createRun();
para2run1.setText("Dette er ein tekst med space på slutten. Den har ein ");
XWPFRun para2run2 = paragraph2.createRun();
para2run2.setText("kursiv tekst");
para2run2.setItalic(true);
XWPFRun para2run3 = paragraph2.createRun();
para2run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");
document.write(new FileOutputStream("c:/tmp/doc/docxtest.docx"));
该代码生成文档,但文本“utheva tekst”和“kursiv tekst”前后的空格被删除,最终结果如下所示:
Dette er ein tekst med space på slutten。 Den har einutheva tekstfør ein tekst med space i byrjinga。 Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer。
这是一个放荡的空间。这是在医学空间中的技术。 Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer。
其中“utheva tekst”为粗体,“kursiv tekst”为斜体。
对此的任何帮助都将非常有用。
I'm trying to generate a docx-document using poi-ooxml. The following code produces almost the document I want, but for some reason it removes end and start spaces from the text.
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun para1run1 = paragraph1.createRun();
para1run1.setText("Dette er ein tekst med space på slutten. Den har ein ");
XWPFRun para1run2 = paragraph1.createRun();
para1run2.setText("utheva tekst");
para1run2.setBold(true);
XWPFRun para1run3 = paragraph1.createRun();
para1run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");
XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun para2run1 = paragraph2.createRun();
para2run1.setText("Dette er ein tekst med space på slutten. Den har ein ");
XWPFRun para2run2 = paragraph2.createRun();
para2run2.setText("kursiv tekst");
para2run2.setItalic(true);
XWPFRun para2run3 = paragraph2.createRun();
para2run3.setText(" før ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.");
document.write(new FileOutputStream("c:/tmp/doc/docxtest.docx"));
The code generates the document, but the spaces before and after the texts "utheva tekst" and "kursiv tekst" are removed, and the end result looks like this:
Dette er ein tekst med space på slutten. Den har einutheva tekstfør ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.
Dette er ein tekst med space på slutten. Den har einkursiv tekstfør ein tekst med space i byrjinga. Denne paragrafen skal også ha litt tekst slik at den blir ganske lang og går over fleire linjer.
Where "utheva tekst" is bold and "kursiv tekst" is italic.
Any help on this will be very useful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
无论您使用 poi 还是 docx4j,我希望您需要 @xml:space ie
在 docx4j 中,有一个方法 setSpace(String value) 用于设置它。
Whether you use poi or docx4j, I expect you need @xml:space ie
In docx4j, there is a method setSpace(String value) for setting this.
我知道这是一个非常老的问题,但我刚刚遇到了类似的问题,并设法使用 JasonPlutext 给出的提示解决了这个问题。
您需要使用以下命令,而不是直接在运行中设置文本:
这将为您提供
而不是
您仍然应该能够直接在运行时设置格式。
I know this is a really old question, but I've just had a similar issue and managed to figure it out using the hint given by JasonPlutext.
Instead of setting the text on the run directly, you need to use this:
Which will give you
rather than
You should still be able to set the formatting on the run directly.