pageoffice 书签 获取_pageoffice 书签 - CSDN
精华内容
参与话题
  • 使用pageoffice实现预览和打印

    千次阅读 2017-10-13 11:24:52
    前置条件:需要一个word模板文档,需要输入文字的地方使用书签站位,书签格式为PO_xxxx 1.引入pageoffice(jsp) import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*;...

    前置条件:需要一个word模板文档,需要输入文字的地方使用书签站位,书签格式为PO_xxxx

    1.引入pageoffice(jsp)

    <%@ page language="java"
    import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*;"
    pageEncoding="gb2312"%>
    <%@ taglib uri="http://java.pageoffice.cn" prefix="po"%>

    2.得到pageoffice、word对象

    <%

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
    poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
    WordDocument doc = new WordDocument();

    3.获取word文档的书签并赋值

    DataRegion custname = doc.openDataRegion("PO_custname");
    custname.setValue(“上海位一信息科技有限公司”);

    4.隐藏菜单栏

    poCtrl1.setMenubar(false);

    5.设置预览时显示的菜单

    poCtrl1.addCustomToolButton("另存为", "Show1()", 1);
    poCtrl1.addCustomToolButton("全屏/还原", "IsFullScreen", 4);
    poCtrl1.addCustomToolButton("刷新", "flash", 5);
    poCtrl1.addCustomToolButton("打印", "Print()", 6);

    6.设置 PageOfficeCtrl 控件的数据对象

    poCtrl1.setWriter(doc);
    poCtrl1.webOpen(模板文件的路径, OpenModeType.docNormalEdit, 取一个名称);


    7.设置 PageOfficeCtrl 控件是否显示Office工具栏。
    poCtrl1.setOfficeToolbars(false);

    8.此方法非常重要,在PageOfficeCtrl的后台Java调用代码末尾处必须调用。
    poCtrl1.setTagId("PageOfficeCtrl1"); //此行必须

    %>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
       <script type="text/javascript">
     function Show1() {
                document.getElementById("PageOfficeCtrl1").ShowDialog(2);
            }
            function Save() {
                document.getElementById("PageOfficeCtrl1").WebSave();
              if(document.getElementById("PageOfficeCtrl1").CustomSaveResult=="ok"){
               alert('保存成功!');
            location.reload() ;

           }else{
               alert('保存失败!');
           }
            }
    //全屏/还原
            function IsFullScreen() {
                document.getElementById("PageOfficeCtrl1").FullScreen = !document.getElementById("PageOfficeCtrl1").FullScreen;
            }
    function Print() {
    document.getElementById("PageOfficeCtrl1").ShowDialog(4); 
       }

    function flash(){
    var form = document.getElementById("flashForm");
    form.submit();
    }
    </script>
        
    <link rel="stylesheet" href="/nstyle/css.css" type="text/css">
       







    </head>


    <body οnlοad="Print();">

    <div style="width:80%; height:700px;position:absolute;z-index:1;" >



    <po:PageOfficeCtrl id="PageOfficeCtrl1"></po:PageOfficeCtrl>

    </div>
    </body>
    </html>



    展开全文
  • java操作word(一)

    千次阅读 2018-05-15 10:51:03
    一、 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印。此需求可以通过用程序填充数据到word模板中来实现。...

    一、 需求背景

      在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印。此需求可以通过用程序填充数据到word模板中来实现。所谓模板也就是标记了数据位置的Word文件。模板可以简单的分为两种:一种模板包含了固定的、有限个数的数据位置,比如一个请假条的模板中只有“部门、姓名、原因、天数、日期”几个数据位置,也可能是这5个数据位置中的某4个、某3个或某1个,但模板中的标签数量总是这个集合的子集(如下图所示:);另一种是包含了循环数据的,比如要生成一个员工信息表,这个表格中有不定个数的员工信息,每个员工的信息都包含了“编号、部门、姓名、年龄、籍贯”。第一种模板导出word文件相对比较简单,在本文中先描述此方案的实现方法。

      

    二、 实现方法

      1. 编辑模板:模板中必须标记好数据要插入的位置,这样才可以实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。使用PageOffice填充数据到word文件,需要用Word书签来标记要插入数据的位置。先在Word模板中标记好“部门、姓名、原因、天数、日期”几个数据位置:PO_Dept、PO_Name、PO_Cause、PO_Num、PO_Date,如下图所示:

      
      一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。
      第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。
      

      第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……
    注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

      PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。

      在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。书签名是不区分大小写的也可以写成“po_”。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“po_”开头的书签才叫数据区域,请注意这点。

      2. 编写代码调用PageOffice的接口填充数据到word文件中:

    复制代码
        // 声明变量存储从数据库中读取的数据    String  docName = "", docDept = "", docCause = "", docNum = "", docDate = "";    // 数据库数据读取操作(不同的数据库用不同的代码)    ResultSet rs = stmt.executeQuery("select * from leaveRecord where ID = " + id);    if (rs.next()) {        docName = rs.getString("Name");        docDept = rs.getString("Dept");        docCause = rs.getString("Cause");        docNum = rs.getString("Num");        docDate = rs.getString("SubmitTime");    }    rs.close();    //创建PageOffice的WordDocument对象,操作Word文件    WordDocument doc = new WordDocument();    doc.openDataRegion("PO_name").setValue(docName);    doc.openDataRegion("PO_dept").setValue(docDept);    doc.openDataRegion("PO_cause").setValue(docCause);    doc.openDataRegion("PO_num").setValue(docNum);    doc.openDataRegion("PO_date").setValue(docDate);    //创建PageOfficeCtrl对象打开文件    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);    poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须    //获取数据对象    poCtrl1.setWriter(doc);    // 打开文档    poCtrl1.webOpen("doc/template.doc", OpenModeType.docReadOnly, "Tom");
    复制代码

     

    三、 生成文件的效果

      

    四、 示例下载

      http://www.zhuozhengsoft.com/down4/Java/BigDemo/poword.rar,或者下载PageOffice for Java的开发包,查看开发包中的示例:三、5、请假条示例

    展开全文
  • pageoffice使用

    万次阅读 多人点赞 2016-09-26 17:44:44
    需要用到的jar包: pageoffice.jar 外部软件: office 2007 准备工作: 1.在xml下配置一个本地磁盘路径,作为保存新建的word保存的路径 D:\JAVA\kinggene\admin\workflow\wordTemp\form\doc\ //seq_word_path为配置...

    需要用到的jar包: pageoffice.jar

    外部软件: office 2007


    web-inf:

     <!-- PageOffice Begin -->
      <servlet>
        <servlet-name>poserver</servlet-name> 
        <servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class> 
      </servlet>
      <servlet-mapping> 
        <servlet-name>poserver</servlet-name> 
        <url-pattern>/poserver.zz</url-pattern> 
      </servlet-mapping> 
      <servlet-mapping> 
        <servlet-name>poserver</servlet-name> 
        <url-pattern>/poserver.do</url-pattern> 
      </servlet-mapping> 
      <servlet-mapping> 
    <servlet-name>poserver</servlet-name> 
    <url-pattern>/pageoffice.cab</url-pattern>
      </servlet-mapping>
      <servlet-mapping> 
    <servlet-name>poserver</servlet-name> 
    <url-pattern>/popdf.cab</url-pattern>
      </servlet-mapping>
      <servlet-mapping> 
    <servlet-name>poserver</servlet-name> 
    <url-pattern>/sealsetup.exe</url-pattern>
      </servlet-mapping>
      <servlet-mapping> 
         <servlet-name>poserver</servlet-name> 
         <url-pattern>/posetup.exe</url-pattern>
      </servlet-mapping>
    
    
      <servlet>
        <servlet-name>adminseal</servlet-name> 
        <servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class> 
      </servlet>
      <servlet-mapping> 
        <servlet-name>adminseal</servlet-name> 
        <url-pattern>/adminseal.do</url-pattern> 
      </servlet-mapping>
      <servlet-mapping> 
        <servlet-name>adminseal</servlet-name> 
        <url-pattern>/loginseal.do</url-pattern>
      </servlet-mapping>
      <servlet-mapping> 
        <servlet-name>adminseal</servlet-name> 
        <url-pattern>/sealimage.do</url-pattern>
      </servlet-mapping>
      <mime-mapping>  
      <extension>mht</extension>  
      <mime-type>message/rfc822</mime-type>  
      </mime-mapping>
      <context-param>
      <param-name>adminseal-password</param-name>
      <param-value>111111</param-value>
      </context-param>
      <!-- PageOffice End -->
    


    准备工作:

    1.在xml下配置一个本地磁盘路径,作为保存新建的word保存的路径

    <seq_word_path>D:\JAVA\kinggene\admin\workflow\wordTemp\form\doc\</seq_word_path>  //seq_word_path为配置路径.读取到即可 利用xml读取

    2.java类 (bean and Service):

    用于查询模板列表 ,判断模板是否存在,进行模板的添加和更新

    在之后可以用于填充数据.拼凑表头和内容.


    使用pageofficectrl的时候,

    需要在JSP的表头引用

    <%@ page import="com.zhuozhengsoft.pageoffice.*,java.awt.*"%>
     <%@ taglib uri="http://java.pageoffice.cn" prefix="po"%> 

    控件需要显示的地方需要

      <po:PageOfficeCtrl id="PageOfficeCtrl1" />


    页面跳转的时候进行模板的查询和打开.


    pageoffice用到较多的类:

    1.PageOfficeCtrl 下的

    1.1 setCustomRibbon(java.lang.String value) 
              自定义Office2007/2010的Ribbon工具栏。 显示按钮.调用JS方法

    1.2   setSaveFilePage(java.lang.String saveFilePage) 
              设置 PageOffice 控件的文档保存页面。 跳转到SaveFile.jsp中才进行保存

    1.3   webOpen(java.lang.String documentURL, OpenModeType openMode, java.lang.String userName) 
              在线打开Office文档。

    1.4   setTagId(java.lang.String id) 
              此方法非常重要,在PageOfficeCtrl的后台Java调用代码末尾处必须调用。 id为控件显示ID "PageOfficeCtrl1"

    依次按照顺序设置下来.

    当编辑完成后.点击信息保存 setsavefilepage .触发save(). 

     document.getElementById("PageOfficeCtrl1").WebSave();//PageOfficeCtrl1保存到服务器

    之后流程会跳转到SaveFile.jsp


    2.savefile.jsp中也引用表头. 不过不需要po

    需要用到的类为:FileSaver

    FileSaver 类用来接收并保存 PageOfficeCtrl 或 FileMakerCtrl 控件提交的文档。

    2.1  getFormField(java.lang.String name) 
              获取 PageOfficeCtrl 控件所在页面指定的Form控件的值。

    2.2  saveToFile(java.lang.String saveAsFileName) 
              保存当前文档到服务器文件夹

    2.3 close()关闭

    依照顺序设置.


    如果还需要.可以调用server 的功能 保存到本地磁盘中.不要忘记关闭.

    ---------------------------------新建模板的思路-----------------------------------


    word载入到系统中进行替换时

    WordDocument 类代表一个Word文档,用来读取用户输入到Word文档中的数据。

      直接进入server中替换掉文档的书签页面.

    1.  openDataRegion(java.lang.String dataRegionName) 
              打开指定的数据区域,并返回 DataRegion 对象

    在方法中打开对应的书签区域.

    2.Table 类,代表PageOffice中定义的Excel表格对象。 调用 DataRegion.openTable 方法获取 Table 对象。

    将数据拼凑成表格模式.

    3. insertRowAfter(Cell cell) 
              在指定单元格所在行之后插入新行。

    4.    openCellRC(int row, int col) 
              打开指定的单元格,并返回 Cell 对象。

    opencellrc().setValue();进行存值

    展开全文
  • java向word模板中填充数据(总结)

    千次阅读 2018-05-07 16:58:23
    使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区域(DataRegion),另一个叫做数据标签...

    使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区域(DataRegion),另一个叫做数据标签(DataTag)。

      一、 概念

      数据区域:是Word文档中具有 "PO_" 前缀命名的书签所定位的文档区域。简单来说,数据区域就是一种特殊的Word书签对象,便于定位Word文档中的内容。

      数据标签:是任意的有效字符组成的特殊样式的字符串(如“【时间】”、“{姓名}”、“${name}”等等)作为标记,理论上这样的字符串(比如:“性别”、“地址”、“aa”、“bbcc”)也可以当做数据标签,但是不推荐使用,因为这样的标签不能从视觉上直观的看出word文档中包含了哪些数据标签。

      二、使用

      数据区域里面可以填充些的内容:文本、图片、Word文件、Excel文件。

    复制代码
        WordDocument doc = new WordDocument();    //填充文本    DataRegion dataRegion1 = doc.openDataRegion("PO_userName");    dataRegion1.setValue("张三");    //还可以给填充的文本设置字体,颜色,粗体等样式    dataRegion1.getFont().setColor(Color.blue);    dataRegion1.getFont().setSize(24);    dataRegion1.getFont().setName("隶书");    dataRegion1.getFont().setBold(true);        //填充图片    doc.openDataRegion("PO_deptName").setValue("[image]img/123.jpg[/image]");    //填充word文件    doc.openDataRegion("PO_deptName").setValue("[word]doc/aabb.doc[/word]");    //填充excel文件    doc.openDataRegion("PO_deptName").setValue("[excel]doc/bbcc.xls[/excel]");
    复制代码

      数据标签中可以填充的内容:文本。

    复制代码
        WordDocument doc = new WordDocument();    //填充文本,还可以设置字体、颜色等样式    DataTag deptTag = doc.openDataTag("{部门名}");    deptTag.setValue("市场部");    deptTag.getFont().setColor(Color.GREEN);    deptTag.getFont().setName("宋体");    deptTag.getFont().setSize(28);
    复制代码

     

      三、区别

            DataRegion类是要与书签结合使用的,既可以先在Word文档中插入以“PO_”开头的书签定义数据区域,再在程序中通过WordDocument类对象的OpenDataRegion(String DataRegionName)方法获取DataRegion对象;又可以通过WordDocument类对象的CreateDataRegion(String NewDataRegionName, DataRegionInsertType insertType, String RelativeDataRegionName)方法直接创建数据区域从而获取DataRegion类对象。而DataTag类是与Word文档中用户插入的自定义特征文本结合使用的。在程序中DataTag类对象只能通过OpenDataTag(String DataTagName)方法获取。

             另外,数据区域的名称(即书签名称)必须以“PO_”开头,两个书签之间要有最少一个的有效字符,不能重复,数据区域的名称和Word文档中的位置是一一对应的。而数据标签的名称就是具有一定特征的Word字符串文本,便于定位Word文档中的内容,可以重复,数据标签的名称和Word文档中的位置是一对多的关系。也就是说,同一个Name的DataRegion只能表示Word文档中唯一一个位置,而在Word文档中相同的特征字符串可以在多处出现。

             所以DataRegion的优点是:DataRegion既可以填充文档内容,还可以创建文档内容、提交用户在DataRegion里输入的内容、获取用户提交的DataRegion里的内容,而DataTag只能用于填充文档内容。DataRegion的缺点是:DataRegion无法简单重复,必须要设置不同的书签,而DataTag可以在文档中多处生成需要重复的内容。

             而应该用DataTag还是用DataRegion,则应该视具体的需求而定。当用户要提交Word中某部分数据或者想要获取Word中提交的某部分数据时则必须要用DataRegion;当用户不需提交数据或者获取数据,并且填充的数据无重复项时,则两者均可;当用户不需提交数据或者获取数据,且填充的数据有多个重复项时,虽然两者均可,但是为了编程简便、代码高效,建议使用DataTag。


    展开全文
  • PageOffice 对Word文档的一键套红功能

    千次阅读 2013-11-14 13:58:36
     PageOffice的一键套红功能是用来实现在线编辑时能方便、快捷、简单地对Word文档进行套红操作。  在线编辑Word文档时,有时需要对Word文档进行套红设置,如有些政府文件、公司内部颁发的文件等等,使用红头模板对...
  • PageOffice--实现用户自定义Word模板

    千次阅读 2018-09-12 14:19:50
    导读: 在涉及到word文档生成的项目中,一般采用编程将数据填充到word模板中生成文件的实现方式,如果模板由开发人员自己设计,那么编程填充数据是相对容易实现的;但如果用户希望可以自己修改模板或自己定义新模板...
  • java调用PageOffice生成word

    千次阅读 2018-05-09 14:49:41
    一、在开发OA办公或与文档相关的Web系统中,难免会遇到动态生成word文档的...jacob要求服务器必须是windows操作系统,服务器上还必须安装office软件,果断放弃!poi需要针对doc和docx两种格式写不同的代码,增加了...
  • java导出word的5种方式

    万次阅读 2019-01-09 08:57:19
    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享...通过Jacob实现了在Java平台上对微软Office的COM接口进行调用。  优点:调用微软Office的COM接口,生成的word文件格式规范。  ...
  • PageOffice动态填充数据库数据

    千次阅读 2017-12-13 18:00:15
    一.动态填充数据库中的数据到文档中(以JAVA语言,Word文档,Sqlite数据库为例).PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request); poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz");...
  • 使用PageOffice---给Word中的Table赋值

    千次阅读 2018-09-14 09:55:45
    因此,要想使用table,则必须在word文件中插入书签(数据区域,即书签的添加使用与实现方法在“导出word.doc”文档中已经详细介绍过了,此处不再赘述)。而table的插入,既可以在Word模版中书签处手动插入:工具栏...
  • 一、因为原本的XWPFDocument类插入图片方法有bug,要么打不开word,要么打开了不显示图片,所以新建一个CustomXWPFDocument类继承XWPFDocument,重写插入图片方法。插入图片默认为嵌入型,这里提供浮于文字上方方法...
  • 纸质办公电子化——iWebOffice中间件

    千次阅读 热门讨论 2012-11-04 14:12:10
     由于使用web页面打印调试位置比较麻烦,而且不同的浏览器要使用不同的打印机,所以我们这次的解决方案是使用iWebOffice组件在实现在web中嵌入word,通过书签读取数据库内容,然后使用word的打印功能(避免了不同...
  • PageOffice实现Word文档编辑区域控制

    千次阅读 2018-09-12 14:14:34
    PageOffice有一个功能就是操作数据区域,不但可以给文件中的数据区域(“PO_”开头的书签)赋值,还可以设置只读模式打开文件的时候哪些数据区域为可编辑模式。在打开文件之前先获取当前登录用户的权限...
  • 运行环境:WIN7 + iis6.1 开发环境:vs2012+SQL2005  问题1: http://axislover.blog.163.com/blog/static/10776515200832531059319/ http://bbs.csdn.net/topics/350233159 ...
  • 使用PageOffice开发,常用的是Word书签来标记要插入数据的位置。 一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。 第一种方法: 把光标定位到需要标记数据...
  • PageOffice能够在线编辑Word、Excel、PowerPoint文档,Word/Excel模板动态填充,Word/Excel在线输入提交,系统数据导入导出word、excel文档的Office快速开发组件库,是目前把Office应用到Web平台上的最全面、最先进...
  • c# 操作Word总结

    千次阅读 2016-09-23 10:28:11
    Word对象模型 (.Net Perspective)  五大对象 Application :代表Microsoft Word应用程序本身  是Document和Selection的基类。通过Application的属性和方法,我们可以控制Word的大环境。...
  • DataRegion 类,代表一个数据区域,用来填充数据区域及控制数据区域格式。您只能通过调用 OpenDataRegion(String) 方法或 CreateDataRegion(String, ... 前缀命名的书签所定位的文档区域。简单来...
1 2 3 4 5 ... 20
收藏数 781
精华内容 312
关键字:

pageoffice 书签 获取