Некоторые примеры построения документов HWPF POI
Я ищу примеры создания нетривиальных документов Word (97-2003) с помощью POI. Я уже достиг, чтобы создать один с "Hello World":
package com.mygroup.myapp.poi.word;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import org.apache.log4j.Logger;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Range;
public class DocFileWriter {
private static final Logger LOGGER = Logger.getLogger(DocFileWriter.class);
private static final String FILE_EXTENSION = ".doc";
private static final URL EMPTY_DOC_URL = DocFileWriter.class.getClassLoader().getResource("empty.doc");
private String pathname;
private HWPFDocument document;
/**
* Constructor
* @param pathname the target path name (e.g.: "/tmp/test.doc", etc.)
* @throws IOException
*/
public DocFileWriter(String pathname) throws IOException {
if (!pathname.endsWith(FILE_EXTENSION)) {
throw new RuntimeException("The file name must ends with " + FILE_EXTENSION);
}
this.pathname = pathname;
try {
document = new HWPFDocument(EMPTY_DOC_URL.openStream());
} catch (IOException e) {
LOGGER.error("Empty document resource missing");
throw e;
}
}
/**
* Adds a "Hello World!" to the document.
*/
public void addHelloWorld() {
Range range = document.getRange();
CharacterRun charRun = range.insertBefore("Hello World!");
charRun.setFontSize(18);
charRun.setItalic(true);
}
/**
* Writes the document on disk.
*/
public void writeDocument() {
try {
document.write(new FileOutputStream(new File(pathname)));
} catch (FileNotFoundException e) {
LOGGER.error("The file cannot be created", e);
} catch (IOException e) {
LOGGER.error("Unable to write the document", e);
}
}
}
Теперь я хотел бы добавить:
- картинка
- пустая страница
- заголовок (только одна строка)
- нижний колонтитул (только одна строка)
- таблица (10 строк, 3 столбца)
Будете ли вы иметь несколько указателей / примеров по этому поводу?
Спасибо.
1 ответ
Решение
Как указано здесь, HWPF является потерянным подпроектом POI. Нет никакого способа написать сложные старые файлы.doc с нуля. Добавление рисунков / верхних / нижних колонтитулов / таблиц осуществляется только в форматах XWPF и.docx.
Поэтому я решил использовать RTF (с расширением.doc). Вот некоторые решения для создания отчетов RTF: