Wed*_*ddy 5 java newline file documentation-generation docx4j
通过我看到的教程.我学会了如何在生成docx文件时添加文本.但是每次我添加一行文字.我注意到第一行文本和第二行文本之间总是有一个空格.就像按两次输入键一样.我知道主要原因是每次我添加一行文字时,我都会使用一个段落.并且段落以另一段后面的空格开头.
这是我添加文本的方式
ObjectFactory factory;
factory = Context.getWmlObjectFactory();
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
P spc = factory.createP();
R rspc = factory.createR();
rspc.getContent().add(wordMLPackage.getMainDocumentPart().createParagraphOfText("sample"));
spc.getContent().add(rspc);
java.io.InputStream is = new java.io.FileInputStream(file);
wordMLPackage.getMainDocumentPart().addObject(spc);
Run Code Online (Sandbox Code Playgroud)
所以这段代码成功运行并产生正确的输出.但是当我添加另一段时.或文字.我希望它只是在第一行文本之下.有没有办法,我可以添加一个简单的文本行而不使用段落?提前致谢
编辑:我也试过像这样添加一个简单的org.docx4j.wml.Text
Text newtext = factory.createText();
newtext.setValue("sample new text");
wordMLPackage.getMainDocumentPart().addObject(newtext);
Run Code Online (Sandbox Code Playgroud)
程序将运行,但是当我打开生成的docx文件时,它只会提示一条消息,说明内容有问题.
下面将代码将逐行生成输出.
键在这里添加Text(1) - > paragraph1和Br - > paragraph1在Text(2) - > paragraph1之后
Br是元素Text和P.通过使用这个,我们可以去换行.
ObjectFactory factory = Context.getWmlObjectFactory();
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
.createPackage();
P spc = factory.createP();
R rspc = factory.createR();
Text t1 = factory.createText();
t1.setValue("tset");
rspc.getContent().add(t1);
Br br = factory.createBr(); // this Br element is used break the current and go for next line
rspc.getContent().add(br);
Text t2 = factory.createText();
t2.setValue("\r\n tset2");
rspc.getContent().add(t2);
spc.getContent().add(rspc);
wordMLPackage.getMainDocumentPart().addObject(spc);
wordMLPackage.save(new java.io.File("helloworld.docx"));
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
TSET
值Tset2
| 归档时间: |
|
| 查看次数: |
9390 次 |
| 最近记录: |