IText 生成简单表格(报表)doc文档 单元居中

IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.jar,iText-2.1.4.jar

亲测无误,代码如下所示:

import com.lowagie.text.*;
import com.lowagie.text.Font;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.rtf.RtfWriter2;

import java.awt.*;
import java.io.FileOutputStream;

/**
 * 生成报修系统的报表doc文档
* User: HYY
* Date: 13-8-1
* Time: 下午9:54
* To change this template use File | Settings | File Templates.
*/
public class GenerateBaoxiu {
    public static void main(String[] args) throws Exception {
        BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

        //设置纸张的大小对象
        Rectangle rectangle = new Rectangle(PageSize.A4);
        // 创建word文档,并旋转,使其横向
        Document document = new Document(rectangle.rotate());
        RtfWriter2.getInstance(document, new FileOutputStream("C:/無幽之路IText教程.doc"));
        document.open();
        //报表标题
        Paragraph headTitle = new Paragraph("学期报修报表");
        Font headFont = new Font(bfChinese);
        headFont.setSize(22);
        headFont.setStyle(Font.BOLD);
        headTitle.setFont(headFont);
        headTitle.setAlignment(1);//居中
        document.add(headTitle);

        //正文表格
        PdfPTable table = new PdfPTable(10);
        table.setWidths(new float[]{15f,9f,9f,9f,11f,8f,20f,15f,9f,9f});
        table.setTotalWidth(114);

        //设置表头字体样式
        Font tableHeadFont = new Font(bfChinese);//表头字体样式
        tableHeadFont.setSize(10.5f);//设置表头字体为五号字体
        tableHeadFont.setStyle(Font.BOLD);//加粗

        //表头第一列:表单申请时间
        PdfPCell headCell1 = new PdfPCell();
        Paragraph headCell1Phrase = new Paragraph("表单申请时间");
        headCell1Phrase.setFont(tableHeadFont);
        headCell1.setPhrase(headCell1Phrase);
        headCell1Phrase.setAlignment(1);
        headCell1.setHorizontalAlignment(1);

        //表头第二列:申请人
        PdfPCell headCell2 = new PdfPCell();
        Paragraph headCell2Phrase = new Paragraph("申请人");
        headCell2Phrase.setFont(tableHeadFont);
        headCell2.setPhrase(headCell2Phrase);
        headCell2Phrase.setAlignment(1);
        headCell2.setHorizontalAlignment(1);

        //表头第三列:维修人
        PdfPCell headCell3 = new PdfPCell();
        Paragraph headCell3Phrase = new Paragraph("维修人");
        headCell3Phrase.setFont(tableHeadFont);
        headCell3.setPhrase(headCell3Phrase);
        headCell3Phrase.setAlignment(1);
        headCell3.setHorizontalAlignment(1);

        //表头第四列:后勤人
        PdfPCell headCell4 = new PdfPCell();
        Paragraph headCell4Phrase = new Paragraph("后勤人");
        headCell4Phrase.setFont(tableHeadFont);
        headCell4.setPhrase(headCell4Phrase);
        headCell4Phrase.setAlignment(1);
        headCell4.setHorizontalAlignment(1);

        //表头第五列:设备类型
        PdfPCell headCell5 = new PdfPCell();
        Paragraph headCell5Phrase = new Paragraph("设备类型");
        headCell5Phrase.setFont(tableHeadFont);
        headCell5.setPhrase(headCell5Phrase);
        headCell5Phrase.setAlignment(1);
        headCell5.setHorizontalAlignment(1);

        //表头第六列:维修设备
        PdfPCell headCell6 = new PdfPCell();
        Paragraph headCell6Phrase = new Paragraph("维修设备");
        headCell6Phrase.setFont(tableHeadFont);
        headCell6.setPhrase(headCell6Phrase);
        headCell6Phrase.setAlignment(1);
        headCell6.setHorizontalAlignment(1);

        //表头第七列:维修地点
        PdfPCell headCell7 = new PdfPCell();
        Paragraph headCell7Phrase = new Paragraph("维修地点");
        headCell7Phrase.setFont(tableHeadFont);
        headCell7.setPhrase(headCell7Phrase);
        headCell7Phrase.setAlignment(1);
        headCell7.setHorizontalAlignment(1);


        //表头第八列:维修完成时间
        PdfPCell headCell8 = new PdfPCell();
        Paragraph headCell8Phrase = new Paragraph("维修完成时间");
        headCell8Phrase.setFont(tableHeadFont);
        headCell8.setPhrase(headCell8Phrase);
        headCell8Phrase.setAlignment(1);
        headCell8.setHorizontalAlignment(1);

        //表头第九列:维修评价
        PdfPCell headCell9 = new PdfPCell();
        Paragraph headCell9Phrase = new Paragraph("维修评价");
        headCell9Phrase.setFont(tableHeadFont);
        headCell9.setPhrase(headCell9Phrase);
        headCell9Phrase.setAlignment(1);
        headCell9.setHorizontalAlignment(1);

        //表头第十列:维修费用
        PdfPCell headCell10 = new PdfPCell();
        Paragraph headCell10Phrase = new Paragraph("维修费用");
        headCell10Phrase.setFont(tableHeadFont);
        headCell10.setPhrase(headCell10Phrase);
        headCell10Phrase.setAlignment(1);
        headCell10.setHorizontalAlignment(1);

        table.addCell(headCell1);
        table.addCell(headCell2);
        table.addCell(headCell3);
        table.addCell(headCell4);
        table.addCell(headCell5);
        table.addCell(headCell6);
        table.addCell(headCell7);
        table.addCell(headCell8);
        table.addCell(headCell9);
        table.addCell(headCell10);
        //表头添加完毕

        //添加表格体
        for(int i=0; i<1000; i++) {
            table.addCell("");
        }
        document.add(table);


        //页脚段落
        Paragraph paraFooter = new Paragraph();
        Font font = new Font();
        //页脚的字体大小
        font.setSize(12f);
        font.setColor(new Color(0, 0, 0));
        paraFooter.setFont(font);
        paraFooter.setAlignment("center");
        //页脚的段落和是否有页码
        HeaderFooter footer = new HeaderFooter(paraFooter, true);
        //页脚的对齐方式(应该在footer设置而不是段落中设置)
        footer.setAlignment(1);
        document.setFooter(footer);

        document.close();
    }

}
原文地址:https://www.cnblogs.com/wuyou/p/3236690.html