2018-09-07 17:32:05 weixin_37904139 阅读数 3979
  1. 没有安装过PageOffice产品的客户端电脑打开文档时会提示“请点此安装PageOffice控件”:

  1. 点击“请点此安装PageOffice控件”:

  1. 点击“下一步”

  1. 点击“安装”

  1. 点“结束”按钮完成安装。
2018-09-10 17:11:00 weixin_34166472 阅读数 48

PageOffice开发平台是北京卓正志远软件公司自主研发具有自主知识产权的软件产品,都是用来提供在线编辑Office文档、动态填充、动态提交功能的通用组件库,能够帮助Web开发人员轻松实现在网页中嵌入微软Office的特殊功能。集成PageOffice不但能够实现在线编辑、保存Office格式的文档、强制痕迹保留,手写批注,圈阅签字,手写签名,电子印章、动态模板套红等在线办公的功能,而且还可以轻松实现Word/Excel动态数据填充,Word/Excel用户输入提交,Word/Excel/PowerPoint等Office文档的在线打开、编辑、保存,权限控制,只读控制,编辑区域控制等高级复杂的功能。只要集成PageOffice,您将能够轻松应对在Web项目开发中遇见的绝大部分和Office文档有关的功能和难题。

最近两年IT业界的软硬件技术发生了巨大的变化,新平台新技术层出不穷,这两年的技术创新速度也是前所未有。微软公司更是紧跟时代潮流先后推出了Windows8、Windows10、IE11、Office2013、Office2016、VS2015、VS2017等具有划时代意义的产品,这要求我们软件开发商也必须加快创新速度,及时推出适应新平台新架构,满足客户新需求的软件产品,否则必然会遭到市场的淘汰。

PageOffice就是在这样的时代背景下诞生的具有里程碑意义的通用Office组件产品。PageOffice能够很好地支持兼容微软的系列新产品,与微软的技术发展方向保持一致。PageOffice具有全新的技术架构,所有的对象、属性、方法都是精雕细琢,力求符合软件开发者的编码习惯,力求与客户的软件源代码无缝结合、保持客户源代码的逻辑结构不受任何影响,力求集成调用简单。PageOffice的代码完全重新编写并且研发了一系列先进的算法,大大提高了运行效率和稳定性。

PageOffice拥有卓越的系统架构,在Web服务器端不用安装微软Office软件即可实现Office文档的打开,数据填充及读取。传统利用Word/Excel服务器端自动化技术存取文档数据的技术具有种种弊端和缺陷,常见的问题诸如Word/Excel死进程,对话框死锁,服务器内存资源耗尽,接口函数不响应,进程无法退出等。微软官方指出Word/Excel是专为客户端设计的单机用户交互程序,不适合作为服务运行,因此不建议在Web服务器端自动化调用Word/Excel程序。使用PageOffice就可以完全避免上述问题。

PageOffice采用独创的技术构建了一个功能强大、简单易用的微软Office Web组件通用软件库,组件提供标准的ASP.NET可视化控件和Java Tag组件调用方式,不但能够在线(浏览器页面)打开、编辑、保存Word/Excel文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Word/Excel文档指定位置,并且也能够从Word/Excel文档中提取指定位置的数据保存到数据库。

通过PageOffice,在Web应用系统开发中,难以调用的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.NET控件、Java组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Word/Excel的具体技术细节交给PageOffice去做。

转载于:https://my.oschina.net/u/3850288/blog/2046261

2018-09-11 15:26:34 weixin_37904139 阅读数 2334

对PageOffice有基本了解的用户可能知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面叫做“数据区域”,模板数据区域的具体制作和详细描述这里不做说明,具体的制作方法请详细阅读“编辑模板中的数据区域”的章节.那么数据区域里面到底能填充些什么内容呢?以Java开发语言为例,下面我们一起学习一下。

1. 数据区域中填充文本数据

	WordDocument doc = new WordDocument();
	//打开数据区域, "PO_userName"就是PageOffice中的数据区域
	DataRegion dataRegion1 = doc.openDataRegion("PO_userName");
	//给数据区域赋值
	dataRegion1.setValue("张三");
    //还可以给填充的文本设置字体,颜色等样式
    dataRegion1.getFont().setColor(Color.blue);
    dataRegion1.getFont().setSize(24);
    dataRegion1.getFont().setName("隶书");
    dataRegion1.getFont().setBold(true);
    
	DataRegion dataRegion2 = doc.openDataRegion("PO_deptName");
	dataRegion2.setValue("销售部");
	dataRegion2.getFont().setColor(Color.red);
	…….
	poCtrl1.setWriter(doc);
	poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");

141

请参考PageOffice开发包中Samples4示例:
二、27、给Word文档中的数据区域(DataRegion)赋值并设置样式

2. 数据区域中填充图片([image]图片路径[/image])

	WordDocument worddoc = new WordDocument();
    
	// 给DataRegion赋值,值的形式为” [image]图片路径[/image]”,这里的图片路径可以是http相对路径,
    // 也可以是文件在服务器磁盘上的绝对路径,也可以是流的形式,例如: 
    // data1.setValue("[image]D:\\1.jpg[/image]");      
    // data1.setValue("[image]downImage.jsp?id=1[/image]");
	DataRegion data1 = worddoc.openDataRegion("PO_p1");
	data1.setValue("[image]doc/1.jpg[/image]");
	…….
    poCtrl1.setWriter(worddoc);
	poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");

3. 数据区域中填充Word文档,生成一个文档合并的效果([word]word文档路径[/word]).

	WordDocument worddoc = new WordDocument();
    
	// 给DataRegion赋值,值的形式为” [word]word文档路径[/word]”,这里的文件路径可以是http相对路径,
    // 也可以是文件在服务器磁盘上的绝对路径,也可以是流的形式,例如: 
    // data1.setValue("[word]D://aa.doc[/word]");            
    // data1.setValue("[word]downFile.jsp?id=1[/word]");
	DataRegion data2 = worddoc.openDataRegion("PO_p2");
	data2.setValue("[word]doc/2.doc[/word]");
	DataRegion data3 = worddoc.openDataRegion("PO_p3");
	data3.setValue("[word]doc/3.doc[/word]");
	…….
    poCtrl1.setWriter(worddoc);
	poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");

142

请参考PageOffice开发包中Samples4示例:
二、7、后台编程插入图片到数据区域(专业版、企业版)

4. 数据区域中插入excel文档,生成一个文档合并的效果([excel]excel文档路径[/excel]).

此处插入的excel文档可以在线手动编辑,但是没有其它excel复杂的功能,并且此功能只有企业版支持。

    WordDocument worddoc = new WordDocument();
    
	//给DataRegion赋值,值的形式为“[word]excel文档路径[/excel]”,这里的文件路径可以是http相对路径,
    // 也可以是文件在服务器磁盘上的绝对路径,也可以是流的形式,例如: 
    //data1.setValue("[excel]D:\\aa.xls[/excel]");            
    //data1.setValue("[excel]downFile.jsp?id=1[/excel]");
    DataRegion data1 = worddoc.openDataRegion("PO_p1");
	data1.setValue("[excel]doc/1.xls[/excel]");
	…….
    poCtrl1.setWriter(worddoc);
	poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");

143

请参考PageOffice开发包中Samples4示例:
二、8、后台编程插入Excel文件到数据区域(企业版)

2018-09-07 17:29:00 weixin_37904139 阅读数 3689

1. 试用版本是有使用期限的,一般试用期为3个月;正式版没有使用期限。

2. 试用版可以查看“关于PageOffice”看到卓正软件公司的版权信息;正式版不显示版权对话框。

3. 试用版在打开文件的时候会有“试用版”字样;正式版没有。

4. 试用版的同一个序列号可以授权安装任意多个服务器;正式版一个序列号只能授权安装一个运行的Web应用程序实例。

2018-09-10 17:21:00 weixin_33797791 阅读数 11

1.功能介绍

PageOffice的并发控制功能用来解决多个用户在线编辑同一篇文档可能造成的互相覆盖修改结果的技术难题。

B/S架构下用户访问都是并发的,也就是说经常会出现同时N个用户对一个服务器页面发出请求,这就有可能同一个文档被多个用户同时打开进行编辑。为什么会出现互相覆盖呢?举个简单例子,例如A用户先访问页面打开了一个文档开始编辑,这时B用户访问相同的页面打开了同一个文档也开始编辑,B用户可能很快就完成了文档修改工作并且保存到服务器。随后A用户也完成了工作并保存文档到服务器。这时,服务器上的这个文档已经变成了A用户修改的最后结果,B用户的修改被A的保存操作覆盖从而消失了。

PageOffice的并发控制能够保证同一时间同一篇文档只能由一个人打开,而这样复杂的控制只需要开发者简单对TimeSlice属性赋值即可实现。无论打开的文档是存放在数据库还是存在物理磁盘里,只要对此文档设置了并发控制,那么实现的效果都是只有当前用户可以对此文档进行编辑、保存等操作,其他用户只能以只读的形式打开。在并发控制期间,其他用户有三个选择,分别是“终止”、“重试”和“忽略”。选择“终止”,则关闭当前提示对话框,对此文档不进行任何操作;选择“重试”,则可以了解当前操作用户的编辑时间是否已经用完,同时可以看到当前操作用户的剩余编辑时间;选择“忽略”,则以只读方式打开此文档,即只能阅读此文档,不能对此文档进行编辑、修改、保存等操作。

2. 如何实现并发控制

在WebOpen之前设置属性TimeSlice。例如设置PageOfficeCtrl1.TimeSlice = 4;那么登录用户对这个文档的编辑时间即为4分钟。用户必须在编辑时间结束之前,进行编辑、保存等操作,在编辑时间结束之后,用户已经编辑的未保存的内容将无法保存。
PageOfficeCtrl1.TimeSlice = 4;//对当前文档开启并发控制
TimeSlice只对当前WebOpen打开的文档有效,如果不赋值,就不进行并发控制。默认值是0,表示不进行并发控制。

注意:

  1. 这里所说的同一份文档,以WebOpen的第一个参数为判断标准。如果两次WebOpen的第一个参数完全相同则视为同一个文档,如果不同则视为不同文档。
  2. 如果两次WebOpen的第一个参数完全相同,第三个参数(用户名)也完全相同,则视为用户修改编辑文档的同时参考原来的文件,属于特殊需要,这时并发控制不起作用。

WebOpen直接打开文档或打开动态页面输出的文档,都可以实现并发控制:
(1)直接打开文档,WebOpen的第一个参数是office文件名结尾。
例如用户a的打开文档的操作如下:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("doc/abc.doc", PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的操作如下:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("doc/abc.doc", PageOffice.OpenModeType. docAdmin, "b");

那么如果对doc/abc.doc这个文档设置了并发控制的话,当a打开此文档后,b只能以只读方式打开此文档,直到a的控制时间结束后,b才可以对此文档进行编辑。
(2)通过动态页面打开文档,WebOpen的第一个参数是一个动态页面的地址,还带有参数值。
例如用户a的打开文档的操作如下:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的操作如下:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "b");

那么如果对这个a.aspx?id=1地址下载的文档设置了并发控制的话,当a打开此文档后,b只能以只读方式打开此文档,直到a的控制时间结束后,b才可以对此文档进行编辑。

3.什么情况下,并发控制不起作用了?

同一个office文件,有两个不同的url地址都可以下载这个文件,当两个用户使用不同的地址打开同一个office文件的时候,并发控制就不起作用了。
(1)例如都是两个不同的动态页面地址都可以下载同一个文件:地址a.aspx?id=1和地址b.aspx?id=1下载的是服务器端同一个文档,用户a的打开文档的代码是:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType.docAdmin, "a");

用户b的打开文档的代码是:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("b.aspx?id=1", PageOffice.OpenModeType. docAdmin, "b");

这样虽然“a.aspx?id=1”和“b.aspx?id=1”打开的是同一个文档,但是因为WebOpen的第一个参数值不同,对于PageOffice来说打开文档的URL也不同,PageOffice认为是两个不同的文件,这种情况并发控制就不起作用了。
(2)例如一个用动态页面地址和一个用文档名结尾的URL地址:访问“a.aspx?id=1”下载的文件就是doc/abc.doc,用户a的打开文档的代码是:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("a.aspx?id=1", PageOffice.OpenModeType. docAdmin, "a");

用户b的打开文档的代码是:

PageOfficeCtrl1.TimeSlice = 4;
PageOfficeCtrl1.WebOpen("doc/abc.doc", PageOffice.OpenModeType. docAdmin, "b",);

还是因为WebOpen的第一个参数值不同,虽然打开的是同一个文档,但是因为PageOffice认为两个文档的URL不一样,所以并发控制也不起作用。

注:此功能不支持PHP开发或集群方式部署。

转载于:https://my.oschina.net/u/3850288/blog/2046277

没有更多推荐了,返回首页