0

POIを使用して重要な Word (97-2003) ドキュメントを作成する例を探しています。私はすでに「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);
        }
    }
}

今私は追加したいと思います:

  • 空白のページ
  • ヘッダー (1 つの文字列のみ)
  • フッター (1 つの文字列のみ)
  • テーブル (10 行 3 列)

それについての指針/例はありますか?

ありがとうございました。

4

1 に答える 1

2

ここで示されているように、HWPF は POI の孤立したサブプロジェクトです。複雑な古い .doc ファイルをゼロから作成する方法はありません。画像/ヘッダー/フッター/テーブルの追加は、XWPF および .docx 形式でのみ管理されます。

そこで、RTF (拡張子は .doc) を使用することにしました。RTF レポートを作成するためのいくつかのソリューションを次に示します。

于 2012-11-27T14:14:43.097 に答える