【问题标题】:How can I create a simple docx file with Apache POI?如何使用 Apache POI 创建一个简单的 docx 文件?
【发布时间】:2010-04-07 12:59:50
【问题描述】:

我正在寻找一个简单的示例代码或完整的教程,如何使用 Apache POI 及其底层 openxml4j 创建一个 docx 文件。

我尝试了以下代码(在 Content Assist 的很多帮助下,感谢 Eclipse!)但代码无法正常工作。

String tmpPathname = aFilename + ".docx";
File tmpFile = new File(tmpPathname);

ZipPackage tmpPackage = (ZipPackage) OPCPackage.create(tmpPathname);
PackagePartName tmpFirstPartName = PackagingURIHelper.createPartName("/FirstPart");
PackagePart tmpFirstPart = tmpPackage.createPart(tmpFirstPartName, "ISO-8859-1");

XWPFDocument tmpDocument = new XWPFDocument(tmpPackage); //Exception
XWPFParagraph tmpParagraph = tmpDocument.createParagraph();
XWPFRun tmpRun = tmpParagraph.createRun();
tmpRun.setText("LALALALAALALAAAA");
tmpRun.setFontSize(18);
tmpPackage.save(tmpFile);

抛出的异常如下:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:235)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:196)
    at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:94)
    at DocGenerator.makeDocxWithPoi(DocGenerator.java:64)
    at DocGenerator.main(DocGenerator.java:50)

有人可以帮我解决我的(非常简单的)要求吗?

【问题讨论】:

  • 我从哪里得到这个库?
  • @AkashG 你可能需要几个库。大多数/所有的 Apache POI/OOXML 内容都在这里:mvnrepository.com/artifact/org.apache.poi(OOXML 是构建 Word 的开源标准。)

标签: java docx apache-poi


【解决方案1】:

以下是使用 POI 创建简单 docx 文件的方法:

XWPFDocument document = new XWPFDocument();
XWPFParagraph tmpParagraph = document.createParagraph();
XWPFRun tmpRun = tmpParagraph.createRun();
tmpRun.setText("LALALALAALALAAAA");
tmpRun.setFontSize(18);
document.write(new FileOutputStream(new File("yourpathhere")));
document.close();

【讨论】:

  • 我们可以删除这个问题吗?太尴尬了……谢谢 Valentin!
  • 哈哈别担心,这里有很多愚蠢的问题(而且POI并不是那么好用)
  • 它只是帮助了我,虽然我没有遇到您的错误,但对于使用 POI 的一个非常简单的示例来说,这是一个很棒的 Google 搜索结果。
  • 对我来说它不起作用,它会生成一个带有螺旋编码的文档。无论流是 UTF-8 还是 cp1250,LibreOffice (OpenOffice) 中的文档都无法正确解码
  • 我从哪里得到这个库?
【解决方案2】:
import java.io.File;   
  import java.io.FileOutputStream;   
  import org.apache.poi.xwpf.usermodel.XWPFDocument;   
  import org.apache.poi.xwpf.usermodel.XWPFParagraph;   
  import org.apache.poi.xwpf.usermodel.XWPFRun;   
  public class DocFile {   
    public void newWordDoc(String filename, String fileContent)   
         throws Exception {   
       XWPFDocument document = new XWPFDocument();   
       XWPFParagraph tmpParagraph = document.createParagraph();   
       XWPFRun tmpRun = tmpParagraph.createRun();   
       tmpRun.setText(fileContent);   
       tmpRun.setFontSize(18);   
       FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\amitabh\\Pictures\\pics\\"+filename + ".doc"));   
       document.write(fos);   
       fos.close();   
    }   
    public static void main(String[] args) throws Exception {   
         DocFile app = new DocFile();   
         app.newWordDoc("testfile", "Hi hw r u?");   

    }   
  }   

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多