Я прочитал документ с текстом и хочу записать в другой файл с использованием Java. Я хочу, чтобы стиль (шрифт, полужирный, курсив, заголовок и т. Д.) Содержимого в прочитанном документе записывался, так как это новый созданный документ. Я могу скопировать содержимое, но не стиль форматирования.Запись в текстовый файл с использованием JAVA
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");
}
}
Будет ли копирование целых абзацев из Test1.docx в Test2.docx? Это было бы возможно с помощью метода 'setParagraph (абзац XWPFParagraph, int pos)' 'XWPFDocument'. –
Что значит «Я не могу копировать номера»? Вы имеете в виду пронумерованные списки (абзацы)? И снова: будет ли копирование целых абзацев из Test1.docx в Test2.docx? Или нужно поместить содержимое нескольких абзацев из Test1.docx в один абзац в Test2.docx требование? –
Скажем, «1. Введение» присутствует в Test1.Docx. Итак, я могу скопировать только «Введение» в Test2.docx –