使用IText实现office Word文档导出

来源:互联网 发布:苹果mac常用软件 编辑:程序博客网 时间:2024/05/29 18:07
package officeWordDoc;import java.awt.Color;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import com.lowagie.text.BadElementException;import com.lowagie.text.Cell;import com.lowagie.text.Document;import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Font;import com.lowagie.text.Image;import com.lowagie.text.PageSize;import com.lowagie.text.Paragraph;import com.lowagie.text.Table;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.rtf.RtfWriter2;import com.lowagie.text.rtf.style.RtfParagraphStyle;/*** @ClassName:WordDocUtilsDemo* @Description:officeWord文档服务类,使用IText实现officeWord文档导出* 需要jar包:IText2.1.7(iReport.jar;iText-2.1.7.jar;iTextAsian.jar;itext-rtf-2.1.7.jar)* @date:2017年5月8日* 修改备注:*/public class WordDocDemo_IText {    private Document document;      public Document getDocument() {          return document;      }        public void setDocument(Document document) {          this.document = document;      }        public WordDocDemo_IText(){          this.document = new Document(PageSize.A4);//设置纸张大小              }      /** 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中     * @param filePath  要操作的文档路径,若文档不存在会自动创建     * @throws com.lowagie.text.DocumentException     * @throws java.io.IOException     */      public void openDocument(String filePath){          //建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中          try {RtfWriter2.getInstance(this.document, new FileOutputStream(filePath));} catch (FileNotFoundException e) {e.printStackTrace();}          this.document.open();    }        /**     * @Description:创建字体样式(字体大小、样式、颜色)     * @param ttf 字体种类 eg:C:\Windows\Fonts\FangSong_GB2312.ttf     * @param fontsize 字体大小     * @param fontStyle 字体样式     * @param color 颜色     * @return 字体样式     * @author: 张路(zhanglu@mail.taiji.com.cn)     * @date: 2017年5月8日 下午1:59:43     */     public Font createFont(String ttf, int fontsize, int fontStyle, Color color){     BaseFont bf = null;         try {         bf = BaseFont.createFont(ttf, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);         //设置中文字体              //BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); } catch (DocumentException | IOException e) { e.printStackTrace(); }     Font font = new Font(bf, fontsize, fontStyle);     font.setColor(color);     font.setSize(14);     return font;     }          /**      * @param titleStr 标题     * @param fontsize 字体大小      * @param fontStyle 字体样式      * @param elementAlign 对齐方式      * @throws com.lowagie.text.DocumentException     */      public void insertTitle(String titleStr,Font titleFont ,int elementAlign){          //创建段落        Paragraph title = new Paragraph(titleStr);          // 设置标题格式对齐方式          title.setAlignment(elementAlign);          title.setFont(titleFont);        try {this.document.add(title);} catch (DocumentException e) {e.printStackTrace();}      }    /**     * 设置带有目录格式的标题(标题1格式)     * @param rtfParagraphStyle 标题1样式     * @param titleStr 标题     * @throws DocumentException     */    public void insertTitlePattern(String titleStr, RtfParagraphStyle rtfParagraphStyle){    //创建段落        Paragraph title = new Paragraph(titleStr);        title.setFont(rtfParagraphStyle);        try {this.document.add(title);} catch (DocumentException e) {e.printStackTrace();}    }          /**     * 设置带有目录格式的标题(标题2格式)     * @param titleStr 标题     * @param rtfParagraphStyle 标题2样式     * @throws DocumentException     */    public void insertTitlePatternSecond(String titleStr,RtfParagraphStyle rtfParagraphStyle){        Paragraph title = new Paragraph(titleStr);        // 设置标题格式对齐方式          title.setFont(rtfParagraphStyle);        try {this.document.add(title);} catch (DocumentException e) {e.printStackTrace();}    }          /**      * @param tableName 标题      * @param fontsize 字体大小      * @param fontStyle 字体样式      * @param elementAlign 对齐方式      * @throws com.lowagie.text.DocumentException     */      public void insertTableName(String tableName,Font titleFont,int elementAlign){          titleFont.setColor(102, 102, 153);        Paragraph title = new Paragraph(tableName);        // 设置标题格式对齐方式          title.setAlignment(elementAlign);          title.setFont(titleFont);        try {this.document.add(title);} catch (DocumentException e) {e.printStackTrace();}      }          /**      * @param contextStr 内容      * @param fontsize 字体大小      * @param fontStyle 字体样式      * @param elementAlign 对齐方式      * @throws com.lowagie.text.DocumentException     */      public void insertContext(String contextStr,Font contextFont,int elementAlign){        Paragraph context = new Paragraph(contextStr);          //设置行距          context.setLeading(3f);        // 正文格式对齐 方式        context.setAlignment(elementAlign);        context.setFont(contextFont);          // 离上一段落(标题)空的行数          context.setSpacingBefore(1);        // 设置第一行空的列数          context.setFirstLineIndent(20);          try {document.add(context);} catch (DocumentException e) {e.printStackTrace();}      }    /**     * @param imgUrl 图片路径     * @param imageAlign 显示位置     * @param height 显示高度     * @param weight 显示宽度     * @param percent 显示比例     * @param heightPercent 显示高度比例     * @param weightPercent 显示宽度比例     * @param rotation 显示图片旋转角度     * @throws java.net.MalformedURLException     * @throws java.io.IOException     * @throws com.lowagie.text.DocumentException     */    public void insertImg(String imgUrl,int imageAlign,int height,    int weight,int percent,int heightPercent,int weightPercent,int rotation){          //添加图片          Image img = null;try {img = Image.getInstance(imgUrl);} catch (BadElementException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}          if(img==null)              return;          img.setAbsolutePosition(0, 0);          img.setAlignment(imageAlign);          img.scaleAbsolute(height, weight);        img.scaleAbsolute(1000, 1000);        img.scalePercent(percent);        img.scalePercent(heightPercent, weightPercent);          img.setRotation(rotation);          try {document.add(img);} catch (DocumentException e) {e.printStackTrace();}    }    /**     * 添加简单表格     * @param column 表格列数(必须)     * @param row 表格行数     * @throws DocumentException     */    public void insertSimpleTable(int column,int row){        Table table = null;try {table = new Table(column);} catch (BadElementException e) {e.printStackTrace();}//列数必须设置,而行数则可以按照个人要求来决定是否需要设置        table.setAlignment(Element.ALIGN_CENTER);// 居中显示        table.setAlignment(Element.ALIGN_MIDDLE);// 纵向居中显示        table.setAutoFillEmptyCells(true);// 自动填满        table.setBorderColor(new Color(0, 125, 255));// 边框颜色        table.setBorderWidth(1);// 边框宽度        table.setSpacing(2);// 衬距,        table.setPadding(2);// 即单元格之间的间距        table.setBorder(20);// 边框        for (int i = 0; i < column*3; i++) {            table.addCell(new Cell(""+i));        }        try {document.add(table);} catch (DocumentException e) {e.printStackTrace();}    }        /**     * 在操作完成后必须关闭document,否则即使生成了word文档,打开也会发生错误     * @throws DocumentException     */    public void closeDocument(){          this.document.close();      }              public static void main(String[] args) {    WordDocDemo_IText wordUtils = new WordDocDemo_IText();     String fileName = "关于"+"dddd"+"的情况报告.doc";     String filePath = "e://exportOffice//eventInfoReceive//";     File file = new File(filePath);     if (!file.exists()) {file.mkdirs();}     Font _font = wordUtils.createFont("C:\\Windows\\Fonts\\FangSong_GB2312.ttf",12,Font.BOLD, new Color(255, 0, 0));     wordUtils.openDocument(filePath+fileName);wordUtils.insertTitle("word文档标题", _font, Element.ALIGN_CENTER);wordUtils.insertContext("市政府应急办:\n" +                        "      2016年9月29日10时52分许,位于XX区XXXXXXXXXXXXXXXXXXXXXXXXXXX"                        + "XXXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXX"                        + "YYYYYYYYYYYYYYYYYYYword文档内容YYYYYYYYYYYYYYYYYYYYYYYYYYYYY"                        + "XXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"                        + "XXXXXXXXXXXXXXXXXXXword文档内容XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"                        + "YYYYYYYYYYYYYYYYYYword文档内容YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"                        + "RRRRRword文档内容RRRRRRRR\n", _font, Element.ALIGN_LEFT);wordUtils.insertContext("市政府应急办:\n" +        "      2016年9月29日10时52分许,位于XX区\n", _font, Element.ALIGN_LEFT);wordUtils.insertContext("市政府应急办:\n" +       "      2016年9月29日10时52分许,位于XX区\n", _font, Element.ALIGN_LEFT);wordUtils.closeDocument();}    }

0 0