我读了一个word文档,想用Java写到另一个word文件中。我想要读取的文档中的内容的样式(字体、粗体、斜体、标题等)被写入,因为它是创建的新文档。我可以复制内容,但不能复制格式样式。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.util.List;
public class ReadFile
{
public static void main(String[] args)throws Exception
{
XWPFDocument docx = new XWPFDocument(new FileInputStream("d:\\Profiles\\mehjain\\Desktop\\Test1.docx"));
List<XWPFParagraph> paragraphList = docx.getParagraphs();
XWPFDocument document= new XWPFDocument();
FileOutputStream out = new FileOutputStream(new File("d:\\Profiles\\mehjain\\Desktop\\Test2.docx"));
XWPFParagraph n = document.createParagraph();
XWPFRun run=n.createRun();
for (XWPFParagraph paragraph: paragraphList)
{
run.setText(paragraph.getText());
run.addCarriageReturn();
}
document.write(out);
document.close();
out.close();
System.out.println("Test2.docx written successfully");
}
}
我得到的答案是复制相同格式的文本,但我无法复制数字。我执行了以下代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.IBody;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.hwpf.model.StyleDescription;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFStyle;
import org.apache.poi.xwpf.usermodel.XWPFStyles;
import java.util.List;
public class ReadFile
{
public static void main(String[] args)throws Exception
{
XWPFDocument docx = new XWPFDocument(new FileInputStream("d:\\Profiles\\mehjain\\Desktop\\Test1.docx"));
List<XWPFParagraph> paragraphList = docx.getParagraphs();
XWPFDocument document= new XWPFDocument();
FileOutputStream out = new FileOutputStream(new File("d:\\Profiles\\mehjain\\Desktop\\Test2.docx"));
XWPFParagraph n = document.createParagraph();
for (XWPFParagraph paragraph : paragraphList)
{
for(XWPFRun run1 : paragraph.getRuns())
{
XWPFRun run=n.createRun();
run.setText(run1.getText(0));
run.setFontFamily( run1.getFontFamily() );
run.setBold( run1.isBold() );
run.setItalic( run1.isItalic() );
run.setStrike( run1.isStrike() );
run.setColor( run1.getColor() );
}
XWPFRun run=n.createRun();
run.addCarriageReturn();
}
document.write(out);
document.close();
out.close();
System.out.println("Test2.docx written successfully");
}
}
将整段内容从一个Word
docx复制到另一个docx将比将所有内容从一个Word
docx复制到另一个docx的单个段落中简单得多。而且由于您声明源docx中有编号,因此需要整个段落,因为只有段落可以编号。
处理以下程序后:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumbering;
import java.util.List;
import java.lang.reflect.Field;
public class CopyWordParagraphsDocToDoc {
public static void main(String[] args)throws Exception {
XWPFDocument docx1 = new XWPFDocument(new FileInputStream("Test1.docx"));
XWPFNumbering numberingDocx1 = docx1.getNumbering();
// get paragraphListDocx1 as a List of all paragraphs from docx1
List<XWPFParagraph> paragraphListDocx1 = docx1.getParagraphs();
// get the numbering.xml from docx1 to docx2
// this is needed if some of the paragraphs from docx1 are numbered
XWPFDocument docx2= new XWPFDocument();
if (numberingDocx1 != null) {
XWPFNumbering numberingDocx2 = docx2.createNumbering();
try {
Field f = numberingDocx1.getClass().getDeclaredField("ctNumbering");
f.setAccessible(true);
numberingDocx2.setNumbering((CTNumbering)f.get(numberingDocx1));
} catch (NoSuchFieldException nsfex) {
} catch (IllegalAccessException iaex) {
}
}
// create a paragraph in docx2
XWPFParagraph paragraphDocx2 = docx2.createParagraph();
XWPFRun run = paragraphDocx2.createRun();
run.setText("This is from Test1.docx:");
// this will copy all paragraphs from paragraphListDocx1 to docx2
for (XWPFParagraph paragraphDocx1 : paragraphListDocx1) {
paragraphDocx2 = docx2.createParagraph();
docx2.setParagraph(paragraphDocx1, docx2.getPosOfParagraph(paragraphDocx2));
}
paragraphDocx2 = docx2.createParagraph();
run = paragraphDocx2.createRun();
run.setText("^-- this was from Test1.docx.");
FileOutputStream out = new FileOutputStream(new File("Test2.docx"));
docx2.write(out);
docx2.close();
System.out.println("Test2.docx written successfully");
}
}
test2.docx将如下所示:
我正在使用ApachePOI Word在java中创建一个docx文件。 现在我正在使用以下代码 但这将整个案文置于一段之下。 但我想把给定的字符串按原样放到文档中。 我尝试将字符串转换为输入流并在创建文档时传递它 但它也给出了一个错误。对此有什么解决方案吗? 这是我想写的字符串的一个示例。 10-SchaumburgIllinois-US xxx 2018-06-28 就业证明 兹证明约翰目前受
我有一个表格的word文档。我想使用Java在这些单元格中插入文本,并且我已经将Apache POI添加到我的项目中。 然而,我只是成功地阅读了文件。我的应用程序获取表中的所有单元格。但我不知道如何在每个单元格中插入新文本?有什么想法吗?
我使用数据库中的数据获取默认表模型,我想以doc word打印为表。如何实现。请参阅下面的代码:
问题内容: 我想在HDFS中创建文件并在其中写入数据。我使用以下代码: 它创建文件,但不写入任何内容。我搜索了很多,但没有找到任何东西。我怎么了 我是否需要任何权限才能在HDFS中写入? 问题答案: 的替代方法,你可以在获取文件系统时传递URI
问题内容: 我正在做一个实验,我们必须读取一个外部文件,对数据进行一些统计,然后使用统计信息创建和写入新文件。除了编写文件,程序中的所有内容都可以正常工作,我无法理解为什么我的方法不起作用。 问题答案: 您必须冲洗并关闭编写器:
问题内容: 我正在处理以下代码: 它给出以下输出: 现在,我想将生成的输出()写入硬盘上的XML文件。我该怎么做? 问题答案: 使用(或)代替构造您的。