使用不同语言生成Word文档

时间:2015-03-06 17:28:15

标签: apache-poi

我想创建一个使用不同语言的Word文档。特别是,我有一个双语原文,每个段落的语言在英语和德语之间变化。这就是我试过的:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFStyles;

public class DocxCreator {

  public static void createDocument(File docxOutput) throws IOException {

    XWPFDocument doc = new XWPFDocument();
    XWPFStyles docStyles = doc.createStyles();
    docStyles.setSpellingLanguage("de-DE");

    {
      XWPFParagraph para = doc.createParagraph();
      XWPFRun run = para.createRun();
      run.setLanguage("de-DE"); // XXX: this method does not exist
      para.setText("Deutsch");
    }

    {
      XWPFParagraph para = doc.createParagraph();
      XWPFRun paraRun = para.createRun();
      para.setStyle("en-US");
      paraRun.setText("English");
    }

    /*- XXX: How do I add the style “en-US” to the document and set its language to en-US”? */

    /* XXX: How do I enable global grammar and spell checking? */

    try (FileOutputStream fos = new FileOutputStream(docxOutput)) {
      doc.write(fos);
    }
  }

  public static void main(String[] args) throws IOException {
    createDocument(new File("multilang.docx"));
  }
}

1 个答案:

答案 0 :(得分:2)

我认为POI目前不支持此。

通常,文本的语言是在XWPFRun(XWPF)/ CharacterRun(HWPF)级别指定的。

  • 对于HWPF(旧二进制* .doc格式),至少存在方法CharacterRun.getLanguageCode() - 但没有相应的设置器。
  • 对于XWPF(新* .docx格式),我根本没有看到这样的事情。

* .doc和* .docx的语言代码相同。列表可用here