Java 如何使用ApachePOI创建简单的docx文件?
我正在搜索一个简单的示例代码或完整的教程,介绍如何使用ApachePOI及其底层Java 如何使用ApachePOI创建简单的docx文件?,java,docx,apache-poi,Java,Docx,Apache Poi,我正在搜索一个简单的示例代码或完整的教程,介绍如何使用ApachePOI及其底层openxml4j创建docx文件 我尝试了以下代码(感谢Eclipse,我从内容助手那里得到了很多帮助),但是代码不能正常工作 String tmpPathname = aFilename + ".docx"; File tmpFile = new File(tmpPathname); ZipPackage tmpPackage = (ZipPackage) OPCPackage.create(tmpPathna
openxml4j
创建docx
文件
我尝试了以下代码(感谢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)
线程“main”java.lang.NullPointerException中的异常
在org.apache.poi.poimmldocumentpart.read(poimmldocumentpart.java:235)
位于org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:196)
位于org.apache.poi.xwpf.usermodel.XWPFDocument.(XWPFDocument.java:94)
在DocGenerator.makeDocxWithPoi(DocGenerator.java:64)
位于DocGenerator.main(DocGenerator.java:50)
有人能帮我满足我的(非常简单的)要求吗?以下是使用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();
我们可以删除这个问题吗?太尴尬了。。。谢谢你,瓦伦丁!哈哈,别担心,这里有很多更愚蠢的问题(POI并不是那么容易使用),它只是帮了我一把,虽然我没有犯你的错误,但对于一个使用POI的非常简单的例子来说,这是一个很棒的谷歌搜索结果。对我来说,它不起作用,它生成了一个编码错误的文档。无论流是UTF-8还是cp1250,LibreOffice(OpenOffice)中的文档都无法正确解码。我从哪里可以获得用于此的库?从哪里可以获得用于此的库?@AkashG您可能需要几个库。ApachePOI/OOXML的大部分内容都在这里:(OOXML是构建Word的开源标准。)
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?");
}
}