zoukankan      html  css  js  c++  java
  • PageOffice动态生成WORD文件

    从空白生成文件的代码:

        WordDocument doc = new WordDocument();
        
        //设置内容标题
        //创建DataRegion对象,PO_title为自动添加的书签名称,书签名称需以“PO_”为前缀,切书签名称不能重复
        //三个参数分别为要新插入书签的名称、新书签的插入位置、相关联的书签名称(“[home]”代表Word文档的页首)
        DataRegion title = doc.createDataRegion("PO_title", DataRegionInsertType.After, "[home]");
        //给DataRegion对象赋值
        title.setValue("JAVA中编程实例
    ");
        //设置字体:粗细、大小、字体名称、是否是斜体
        title.getFont().setBold(true);
        title.getFont().setSize(20);
        title.getFont().setName("黑体");
        title.getFont().setItalic(false);
        //定义段落对象
        ParagraphFormat titlePara = title.getParagraphFormat();
        //设置段落对齐方式
        titlePara.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
        //设置段落行间距
        titlePara.setLineSpacingRule(WdLineSpacing.wdLineSpaceMultiple);
     
        //设置内容
        //第一段
        //创建DataRegion对象,PO_body为自动添加的书签名称
        DataRegion body = doc.createDataRegion("PO_body", DataRegionInsertType.After, "PO_title");
        //设置字体:粗细、是否是斜体、大小、字体名称、字体颜色
        body.getFont().setBold(true);
        body.getFont().setItalic(true);
        body.getFont().setSize(10);
        //设置中文字体名称
        body.getFont().setName("楷体");
        //设置英文字体名称
        body.getFont().setNameAscii("Times New Roman");
        body.getFont().setColor(Color.red);
        //给DataRegion对象赋值
        body.setValue("首先,我向大家介绍一下套接字的概念。
    ");
        //创建ParagraphFormat对象
        ParagraphFormat bodyPara = body.getParagraphFormat();
        //设置段落的行间距、对齐方式、首行缩进
        bodyPara.setLineSpacingRule(WdLineSpacing.wdLineSpaceAtLeast);
        bodyPara.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
        bodyPara.setFirstLineIndent(21);

    在一个word模板的文件中插入一个图片、word和Excel文档的代码:

        WordDocument doc = new WordDocument();
        //插入图片
        // PO_body3是word模板中已存在的一个书签
        DataRegion body4 = doc.createDataRegion("PO_body4", DataRegionInsertType.After, "PO_body3");
        body4.setValue("[image]doc/logo.png[/image]");
        //嵌入其他Word文件
        //body4.Value = "[word]doc/1.doc[/word]";
        //嵌入其他Excel文件
        //body4.Value = "[excel]doc/1.xls[/excel]";
        ParagraphFormat bodyPara4 = body4.getParagraphFormat();
        bodyPara4.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);

    操作word中的表格代码:

        WordDocument doc = new WordDocument();
        //打开数据区域
        DataRegion dataRegion = doc.openDataRegion("PO_regTable");
        //打开table,openTable(index)方法中的index代表Word文档中table位置的索引,从1开始
        Table table = dataRegion.openTable(1);
        //给table中的单元格赋值, openCellRC(int,int)中的参数分别代表第几行、第几列,从1开始
        table.openCellRC(3, 1).setValue("A公司");
        table.openCellRC(3, 2).setValue("开发部");
        table.openCellRC(3, 3).setValue("李清");
        //插入一行,insertRowAfter方法中的参数代表第几行,从1开始
        table.insertRowAfter(3);
        table.openCellRC(4, 1).setValue("B公司");
        table.openCellRC(4, 2).setValue("销售部");
        table.openCellRC(4, 3).setValue("张三");

    给word添加一个水印,对于实现这个效果来说,PageOffice确实已经做到简单到极致,如果用iText那个方案,需要写至少十几行代码吧(由于篇幅的限制,这里就不写了,有兴趣的话可以网上搜索一下相关的资料),但 PageOffice的代码只用下面一句:

        WordDocument doc =new WordDocument();
        //添加水印 ,设置水印的内容
        doc.getWaterMark().setText("北京某某公司");

    优点有以下几点:不限制于Windows平台;接口和对象的设计就是针对Office文件生成专门优化设计的,代码写起来比较舒服可读性强;编程的工作量更小,如果开发中也利用了Word模板,那开发量可以更低;生成的文件是地地道道的Word格式,生成的文件效果比较完美;也不需要像POI那样必须对doc和docx格式分别写代码;最后一点:服务器端不需要安装Office,不使用服务器端资源,所以不需要处理服务器端文件生成时的并发问题,也就是很多用户同时访问系统生成文件时服务器的压力问题。请注意这点,采用这个方案的话,文件是在客户端生成的,调用的是客户端的资源,完全符合分布式计算的思想。

  • 相关阅读:
    Combination Sum
    Partition List
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees II
    Count and Say
    Triangle
    3Sum Closest
    Search for a Range
    Longest Common Prefix
    Convert Sorted List to Binary Search Tree
  • 原文地址:https://www.cnblogs.com/xingmangdieyi110/p/10286932.html
Copyright © 2011-2022 走看看