iText导出word教程实例,可自选导出位置

一、准备jar包;
iText-2.1.7.jar
itext-rtf-2.1.7.jar
iTextAsian-2.1.7.jar

二、导出思路

此图是我想要导出文档的样式,文档由标题、段落、表格组成。
A2表数据是根据A1表主键查询得来的,所以利用for循环将内容循环输出。

三、网上的iText使用教程主要介绍如何建立Document,如何写入内容和定义格式,并不会介绍如何定位文档输出位置。教程只能教你把文档下载到C盘,D盘…,无疑是不符合实际要求的。
通过HttpServletResponse response可以实现文档定位。

四、代码
@SuppressWarnings({ "unchecked", "resource" })br/>@Override
@Transactional
public void createword(XXXForm form,HttpServletResponse response)throws DocumentException, IOException{
//设置纸张大小
Document document = new Document(PageSize.A4);
try {
String fileName = new String("XXXX.doc".getBytes("gb2312"), "ISO8859-1");
response.setHeader("Content-disposition", "attachment; filename="+ fileName); //设定输出文件头
response.setContentType("application/msword"); //定义输出类型
//建立一个书写器,与document对象关联
RtfWriter2.getInstance(document, response.getOutputStream());
document.open();

        //设置中文字体  
        BaseFont bfChinese = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);  
        //标题字体风格  
        Font titleFont = new Font(bfChinese,12,Font.BOLD);  
        //正文字体风格  
        Font contextFont = new Font(bfChinese,10,Font.NORMAL); 

        //标题
        Paragraph title = new Paragraph("文章标题");  
        title.setAlignment(Element.ALIGN_CENTER);//设置标题格式对齐方式  
        title.setFont(titleFont);  
        document.add(title);  

        //日期
        Date date = new Date(0);
        SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd " );
        Paragraph context = new Paragraph(sdf.format(date));  
        context.setAlignment(Element.ALIGN_RIGHT);//靠右对齐
        context.setFont(contextFont);//正文字体风格
        context.setSpacingBefore(3);//段间距   
        context.setFirstLineIndent(20);//设置第一行空的列数  
        document.add(context);  

        List<entity1> list = A1Dao.findAll();
        if(list.size() > 0){
            for(int i = 0;i < list.size();i++){
                //表中英名称
                Paragraph name = new Paragraph(list.get(i).getXXX()+" "+list.get(i).getXXX());  
                name.setAlignment(Element.ALIGN_LEFT);//靠左对齐  
                name.setFont(contextFont); //正文字体风格
                document.add(name);

                //设置Table表格,创建一个五列的表格  
                Table table = new Table(5);  
                int width[] = {40,15,15,15,15};//设置每列宽度比例  
                table.setWidths(width);  
                table.setWidth(100);//占页面宽度比例  
                table.setAlignment(Element.ALIGN_CENTER);//居中  
                table.setAlignment(Element.ALIGN_MIDDLE);//垂直居中  
                table.setAutoFillEmptyCells(true);//自动填满  
                table.setBorderWidth(1);//边框宽度  
                table.addCell(new Cell("列名一"));  
                table.addCell(new Cell("列名二"));  
                table.addCell(new Cell("列名三")); 
                table.addCell(new Cell("列名四"));
                table.addCell(new Cell("列名五"));

                List<entity2> list2 = A2Dao.findByA1(list.get(i).getXXX());
                if(list2.size() > 0){
                    for(int j = 0;j < list2.size();j++){
                        table.addCell(new Cell(list2.get(j).getXXX()));  
                        table.addCell(new Cell(list2.get(j).getXXX()));  
                        table.addCell(new Cell(list2.get(j).getXXX())); 
                        table.addCell(new Cell(list2.get(j).getXXX()));
                        table.addCell(new Cell(list2.get(j).getXXX()));
                    }
                }

                document.add(table);
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    document.close();

}iText导出word教程实例,可自选导出位置

转载于:https://blog.51cto.com/12527958/2043911

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值