itext导出word文档常用方法汇总

在实际项目中经常需要导出Word文档,Itext是其中一种选择,使用Itext导出Word文档时需要导入iText-2.1.7.jar和iText-rtf-2.1.7.jar两个jar,具体实现如下代码所示:

package cn.outofmemory.utils.file;

import java.awt.Color;

import com.lowagie.text.Chunk;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;

public class DocStyleUtils {

/** 
 * 功能说明:设置字体的样式,颜色为黑色</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param family  字体类型 
 * @param size    字体大小,22f为二号,18f为小二号,16f为三号 
 * @param style   字体样式 
 * @return 
 */  
public static Font setFontStyle(String family , float size , int style){  
    return setFontStyle(family, Color.BLACK, size, style);  
}  

/** 
 * 功能说明:设置字体的样式</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param family  字体类型 
 * @param color   字体颜色 
 * @param size    字体大小,22f为二号,18f为小二号,16f为三号 
 * @param style   字体样式 
 * @return 
 */  
public static Font setFontStyle(String family , Color color , float size , int style){  
    Font font = new Font();  
    font.setFamily(family);  
    font.setColor(color);  
    font.setSize(size);  
    font.setStyle(style);  
    return font;  
}  

/** 
 * 功能说明:为文字填充浅灰色背景</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param content   需要填充背景颜色的内容 
 * @param appendStr 不需要填充背景颜色的内容 
 * @return 
 */  
private static Phrase setPhraseStyle(String content , String appendStr){  
    Chunk chunk = new Chunk(content);  
    //填充的背景颜色为浅灰色  
    chunk.setBackground(Color.LIGHT_GRAY);  
    Phrase phrase = new Phrase(chunk);  
    phrase.add(appendStr);  
    return phrase;  
}  

/** 
 * 功能说明:设置段落的样式,设置前半截内容和后半截内容格式不一样的段落样式</BR> 
 * 修改日:2011-04-27 
 * @author myclover 
 * @param content  前半截内容 
 * @param font     字体的样式 
 * @param firstLineIndent 首行缩进多少字符,16f约等于两个字符 
 * @param appendStr 后半截内容 
 * @return 
 */  
public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , String appendStr){  
    Paragraph par = setParagraphStyle(content, font, 0f, 12f);  
    Phrase phrase = new Phrase();  
    phrase.add(par);  
    phrase.add(appendStr);  
    Paragraph paragraph = new Paragraph(phrase);  
    paragraph.setFirstLineIndent(firstLineIndent);  
    //设置对齐方式为两端对齐  
    paragraph.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);  
    return paragraph;  
}  

/** 
 * 功能说明:设置段落的样式,设置前半截内容填充了浅灰色的背景颜色,后半截内容没有背景颜色的段落样式</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param content  前半截有背景颜色的内容 
 * @param font     字体的样式 
 * @param firstLineIndent 首行缩进的字符,16f约等于两个字符 
 * @param leading  行间距12f表示单倍行距 
 * @param appendStr 后半截内容 
 * @return 
 */  
public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , String appendStr){  
    Phrase phrase = setPhraseStyle(content , appendStr);  
    Paragraph par = new Paragraph(phrase);  
    par.setFont(font);  
    par.setFirstLineIndent(firstLineIndent);  
    par.setLeading(leading);  
    //设置对齐方式为两端对齐  
    par.setAlignment(Paragraph.ALIGN_JUSTIFIED_ALL);  
    return par;  
}  

/** 
 * 功能说明:设置段落的样式,一般用于设置标题</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param content  段落的内容 
 * @param font     字体样式 
 * @param leading  行间距 
 * @param alignment 对齐方式 
 * @return 
 */  
public static Paragraph setParagraphStyle(String content , Font font , float leading , int alignment){  
    return setParagraphStyle(content, font, 0f, leading, 0f, alignment);  
}  

/** 
 * 功能说明:设置段落的样式,对齐方式为两端对齐,缩进样式是文本之后0.2毫米</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param content  段落的内容 
 * @param font     字体的样式 
 * @param firstLineIndent 首行缩进多少字符,16f约等于两个字符 
 * @param leading  行间距 
 * @return 
 */  
public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading){  
    return setParagraphStyle(content, font, firstLineIndent, leading, 0.6f, Paragraph.ALIGN_JUSTIFIED_ALL);  
}  

/** 
 * 功能说明:设置段落的样式</BR> 
 * 修改日期:2011-04-27 
 * @author myclover 
 * @param content  段落的内容 
 * @param font     字体的样式 
 * @param firstLineIndent  首行缩进多少字符,16f约等于两个字符 
 * @param leading  行间距 
 * @param indentationRight 缩进样式中的文本之后多少毫米,0.6f相当于0.2毫米 
 * @param alignment 对齐方式 
 * @return 
 */  
public static Paragraph setParagraphStyle(String content , Font font , float firstLineIndent , float leading , float indentationRight , int alignment){  
    Paragraph par = new Paragraph(content, font);  
    par.setFirstLineIndent(firstLineIndent);  
    par.setLeading(leading);  
    par.setIndentationRight(indentationRight);  
    par.setAlignment(alignment);  
    return par;  
}  

}
测试类如下:

package cn.outofmemory.utils.file;

import java.io.File;
import java.io.FileOutputStream;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.rtf.RtfWriter2;

public class TestDoc {

/** 
 * @param args 
 */  
public static void main(String[] args) {  
    exportDoc("D:\\test.doc");  

}  

public static void exportDoc(String fileName){  
    try {  
        Document doc = new Document();  
        RtfWriter2.getInstance(doc, new FileOutputStream(fileName));  
        // 打开文档  
        doc.open();  
        //设置页边距,上、下25.4毫米,即为72f,左、右31.8毫米,即为90f  
        doc.setMargins(90f, 90f, 72f, 72f);  

        //设置标题字体样式,粗体、二号、华文中宋  
        Font tfont = DocStyleUtils.setFontStyle("华文中宋", 22f, Font.BOLD);  
        //设置正文内容的字体样式,常规、三号、仿宋_GB2312  
        Font bfont = DocStyleUtils.setFontStyle("仿宋_GB2312", 16f, Font.NORMAL);  

        //构建标题,居中对齐,12f表示单倍行距  
        Paragraph title = DocStyleUtils.setParagraphStyle("测试Itext导出Word文档", tfont, 12f, Paragraph.ALIGN_CENTER);  
        //构建正文内容  
        StringBuffer contentSb = new StringBuffer();  
        contentSb.append("最近项目很忙,这个是项目中使用到的,所以现在总结一下,以便今后可以参考使用,");  
        contentSb.append("2011年4月27日 — 2011年5月20日,对以下技术进行使用,");  
        contentSb.append("Itext、");  
        contentSb.append("Excel、");  
        contentSb.append("Word、");  
        contentSb.append("PPT。");  

        //首行缩进2字符,行间距1.5倍行距  
        Paragraph bodyPar = DocStyleUtils.setParagraphStyle(contentSb.toString(), bfont, 32f, 18f);  
        Paragraph bodyEndPar = DocStyleUtils.setParagraphStyle("截至2011年4月28日,各种技术已经完全实现。", bfont, 32f, 18f);  
        //设置空行  
        Paragraph blankRow = new Paragraph(18f, " ", bfont);  
        Paragraph deptPar = DocStyleUtils.setParagraphStyle("(技术开发部盖章)", bfont, 12f, Paragraph.ALIGN_RIGHT);  
        Paragraph datePar = DocStyleUtils.setParagraphStyle("2011-04-30", bfont, 12f, Paragraph.ALIGN_RIGHT);  

        //向文档中添加内容  
        doc.add(title);  
        doc.add(blankRow);  
        doc.add(bodyPar);  
        doc.add(bodyEndPar);  
        doc.add(blankRow);  
        doc.add(blankRow);  
        doc.add(blankRow);  
        doc.add(deptPar);  
        doc.add(datePar);  

        //最后一定要记住关闭  
        doc.close();  

    } catch (Exception e) {  
        e.printStackTrace();  
    }  
}     

}

转载于:https://my.oschina.net/yilin007/blog/680605

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值