POI 导出word

package util;

import java.io.IOException;  
import java.io.InputStream;  
  
import org.apache.poi.openxml4j.opc.OPCPackage;  
import org.apache.poi.xwpf.usermodel.XWPFDocument;  
import org.apache.xmlbeans.XmlException;  
import org.apache.xmlbeans.XmlToken;  
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;  
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;  
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;  
  
/** 
 * @author lijianhua
 *  
 */  
public class CustomXWPFDocument extends XWPFDocument {  
    public CustomXWPFDocument(InputStream in) throws IOException {  
        super(in);  
    }  
  
    /** 
     *  
     */  
    public CustomXWPFDocument() {  
        super();  
        // TODO Auto-generated constructor stub   
    }  
  
    /** 
     * @param pkg 
     * @throws IOException 
     */  
    public CustomXWPFDocument(OPCPackage pkg) throws IOException {  
        super(pkg);  
        // TODO Auto-generated constructor stub   
    }  
  
    public void createPicture(int id, int width, int height) {  
        final int EMU = 9525;  
        width *= EMU;  
        height *= EMU;  
        String blipId = getAllPictures().get(id).getPackageRelationship()  
                .getId();  
  
        CTInline inline = createParagraph().createRun().getCTR()  
                .addNewDrawing().addNewInline();  
  
        String picXml = ""  
                + "<a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">"  
                + "   <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"  
                + "      <pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"  
                + "         <pic:nvPicPr>" + "            <pic:cNvPr id=\""  
                + id  
                + "\" name=\"Generated\"/>"  
                + "            <pic:cNvPicPr/>"  
                + "         </pic:nvPicPr>"  
                + "         <pic:blipFill>"  
                + "            <a:blip r:embed=\""  
                + blipId  
                + "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"  
                + "            <a:stretch>"  
                + "               <a:fillRect/>"  
                + "            </a:stretch>"  
                + "         </pic:blipFill>"  
                + "         <pic:spPr>"  
                + "            <a:xfrm>"  
                + "               <a:off x=\"0\" y=\"0\"/>"  
                + "               <a:ext cx=\""  
                + width  
                + "\" cy=\""  
                + height  
                + "\"/>"  
                + "            </a:xfrm>"  
                + "            <a:prstGeom prst=\"rect\">"  
                + "               <a:avLst/>"  
                + "            </a:prstGeom>"  
                + "         </pic:spPr>"  
                + "      </pic:pic>"  
                + "   </a:graphicData>" + "</a:graphic>";  
  
        // CTGraphicalObjectData graphicData =   
        inline.addNewGraphic().addNewGraphicData();  
        XmlToken xmlToken = null;  
        try {  
            xmlToken = XmlToken.Factory.parse(picXml);  
        } catch (XmlException xe) {  
            xe.printStackTrace();  
        }  
        inline.set(xmlToken);  
        // graphicData.set(xmlToken);   
  
        inline.setDistT(0);  
        inline.setDistB(0);  
        inline.setDistL(0);  
        inline.setDistR(0);  
  
        CTPositiveSize2D extent = inline.addNewExtent();  
        extent.setCx(width);  
        extent.setCy(height);  
  
        CTNonVisualDrawingProps docPr = inline.addNewDocPr();  
        docPr.setId(id);  
        docPr.setName("图片" + id);  
        docPr.setDescr("现场监理图片");  
    }  
}  
package util;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.xwpf.usermodel.BreakClear;
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.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

/**
 * 
 * @author lijianhua
 *
 */
public class SimpleDocument {

 public static void main(String[] args) throws Exception {
//     XWPFDocument doc = new XWPFDocument();
//     OPCPackage pack = POIXMLDocument.openPackage("");
     CustomXWPFDocument doc = new CustomXWPFDocument(); 
     XWPFParagraph p1 = doc.createParagraph();
     p1.setAlignment(ParagraphAlignment.CENTER);//设置字体对齐方式
     p1.setWordWrap(true);
     p1.setPageBreak(false);//设置是否分页
     p1.setSpacingLineRule(LineSpacingRule.EXACT);
//   p1.setIndentationFirstLine(2400);//设置当前行往后缩多少
     p1.setVerticalAlignment(TextAlignment.CENTER);
     XWPFRun r1 = p1.createRun();
     r1.setText("现场监理");
     r1.setFontSize(40);
     r1.setBold(true);//是否加粗
     r1.setFontFamily("Courier");//字体类型
//   r1.setUnderline(UnderlinePatterns.DOT_DOT_DASH);//设置下划线
     r1.setTextPosition(100);//设置上下两行的间距
/*------------------------------------------------------*/
     XWPFParagraph p2 = doc.createParagraph();
     p2.setAlignment(ParagraphAlignment.CENTER);
     p2.setWordWrap(true);
     p2.setPageBreak(false);//设置是否分页
     p2.setSpacingLineRule(LineSpacingRule.EXACT);

     XWPFRun r2 = p2.createRun();
     r2.setText("监理日记");
     r2.setFontSize(20);
     XWPFRun r3 = p2.createRun();
     r3.setStrike(false);//是否在字体上加线
     r3.setFontSize(20);
//   r3.setSubscript(VerticalAlign.SUPERSCRIPT);//注释
     /* 增加图片 */
     
//     int ind = doc.addPicture(new FileInputStream("e:\\1.jpg"), XWPFDocument.PICTURE_TYPE_JPEG); 
//     int ind = doc.addPicture(new FileInputStream("http:\\121.32.24.243:5050\\mwuploadfiles\\superupload\\8db9d1f868494dfeb7f96b83f6e2e93d\\20131219\\20131219093809884138741631946212816041006258.jpg"), XWPFDocument.PICTURE_TYPE_JPEG); 
     int ind = doc.addPicture(new FileInputStream("F:\\apache-tomcat-6.0.29\\webapps\\mwuploadfiles\\superupload\\8db9d1f868494dfeb7f96b83f6e2e93d\\20131219\\20131219093809884138741631946212816041006258.jpg"), XWPFDocument.PICTURE_TYPE_JPEG); 
     doc.createPicture(ind, 259, 178); 
 /*------------------------------------------------------*/
     XWPFParagraph p3 = doc.createParagraph();
     p3.setWordWrap(true);
     p3.setPageBreak(false);//设置是否分页
     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.addCarriageReturn();//换行
     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);//设置斜体
     
     
     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" + ".......");
   /*------------------------------------------------------*/
     SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
     String fileNameString = format.format(new Date());
     FileOutputStream out = new FileOutputStream("e:\\"+fileNameString+".doc");
     doc.write(out);
     System.out.println(doc);
     out.close();

 }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值