poi-3.8生成word文档

项目生成word文档时,需要额外的poi库,包括poi-ooxml、poi-scratchpad和poi-ooxml-schemas。在使用XWPFDocument时,可能会遇到ClassNotFoundException,这需要添加xmlbeans-2.3.0.jar。提供了一个生成word文档的demo示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要生成word文档,于是在网上找出一些例子,但遇到问题不少,首先就jar包来说,一般我们操作下载excel文档,只需要一个poi-3.8-20120326.jar就足矣,然而当需要操作到word时候就需要poi-ooxml-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar,poi-ooxml-schemas-3.8-20120326.jar这个了,用这个我们可以建

XWPFDocument doc = new XWPFDocument(); 这样一个类,但是此处依然会报错,

java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException

才发现我们还是少了jar包,这里我们需要用到xmlbeans-2.3.0.jar,这个jar包poi本身不提供的,需要我们去下载,

从别处扣来的一个生产word文档的demo,如下:

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.Borders;
import org.apache.poi.xwpf.usermodel.BreakClear;
import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.LineSpacingRule;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.TextAlignment;
import org.apache.poi.xwpf.usermodel.UnderlinePatterns;
import org.apache.poi.xwpf.usermodel.VerticalAlign;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class WordTest {
	public static void main(String[] args) throws Exception {  
        XWPFDocument doc = new XWPFDocument();  
  
        XWPFParagraph p1 = doc.createParagraph();  
        p1.setAlignment(ParagraphAlignment.CENTER);  
        p1.setBorderBottom(Borders.DOUBLE);  
        p1.setBorderTop(Borders.DOUBLE);  
  
        p1.setBorderRight(Borders.DOUBLE);  
        p1.setBorderLeft(Borders.DOUBLE);  
        p1.setBorderBetween(Borders.SINGLE);  
  
        p1.setVerticalAlignment(TextAlignment.TOP);  
  
        XWPFRun r1 = p1.createRun();  
        r1.setBold(true);  
        r1.setText("The quick brown fox");  
        r1.setBold(true);  
        r1.setFontFamily("Courier");  
        r1.setUnderline(UnderlinePatterns.DOT_DOT_DASH);  
        r1.setTextPosition(100);  
  
        XWPFParagraph p2 = doc.createParagraph();  
        p2.setAlignment(ParagraphAlignment.RIGHT);  
  
        //BORDERS  
        p2.setBorderBottom(Borders.DOUBLE);  
        p2.setBorderTop(Borders.DOUBLE);  
        p2.setBorderRight(Borders.DOUBLE);  
        p2.setBorderLeft(Borders.DOUBLE);  
        p2.setBorderBetween(Borders.SINGLE);  
  
        XWPFRun r2 = p2.createRun();  
        r2.setText("jumped over the lazy dog");  
        r2.setStrike(true);  
        r2.setFontSize(20);  
  
        XWPFRun r3 = p2.createRun();  
        r3.setText("and went away");  
        r3.setStrike(true);  
        r3.setFontSize(20);  
        r3.setSubscript(VerticalAlign.SUPERSCRIPT);  
  
  
        XWPFParagraph p3 = doc.createParagraph();  
        p3.setWordWrap(true);  
        p3.setPageBreak(true);  
                  
        //p3.setAlignment(ParagraphAlignment.DISTRIBUTE);  
        p3.setAlignment(ParagraphAlignment.BOTH);  
        p3.setSpacingLineRule(LineSpacingRule.EXACT);  
  
        p3.setIndentationFirstLine(600);  
          
  
        XWPFRun r4 = p3.createRun();  
        r4.setTextPosition(20);  
        r4.setText("To be, or not to be: that is the question: "  
                + "Whether 'tis nobler in the mind to suffer "  
                + "The slings and arrows of outrageous fortune, "  
                + "Or to take arms against a sea of troubles, "  
                + "And by opposing end them? To die: to sleep; ");  
        r4.addBreak(BreakType.PAGE);  
        r4.setText("No more; and by a sleep to say we end "  
                + "The heart-ache and the thousand natural shocks "  
                + "That flesh is heir to, 'tis a consummation "  
                + "Devoutly to be wish'd. To die, to sleep; "  
                + "To sleep: perchance to dream: ay, there's the rub; "  
                + ".......");  
        r4.setItalic(true);  
//This would imply that this break shall be treated as a simple line break, and break the line after that word:  
  
        XWPFRun r5 = p3.createRun();  
        r5.setTextPosition(-10);  
        r5.setText("For in that sleep of death what dreams may come");  
        r5.addCarriageReturn();  
        r5.setText("When we have shuffled off this mortal coil,"  
                + "Must give us pause: there's the respect"  
                + "That makes calamity of so long life;");  
        r5.addBreak();  
        r5.setText("For who would bear the whips and scorns of time,"  
                + "The oppressor's wrong, the proud man's contumely,");  
          
        r5.addBreak(BreakClear.ALL);  
        r5.setText("The pangs of despised love, the law's delay,"  
                + "The insolence of office and the spurns" + ".......");  
  
        FileOutputStream out = new FileOutputStream("simple.docx");  
        doc.write(out);  
        out.close();  
  
    }  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值