`
妮子321
  • 浏览: 82168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

卓正PageOffice与数据库的关系

阅读更多

PageOffice产品和数据库是两个独立的概念,严格来说两者之间没有任何本质关系。PageOffice不依赖数据库而存在,但是数据库和PageOffice可以结合使用来完成某些复杂的业务逻辑。例如:PageOffice可以将数据库中数据的动态填充到Word或Excel文档中,还可以打开数据库中的二进制流文件,也可以将Word或者Excel整个文档或者文档中的一部分数据保存到数据库中,这里的数据库可以是任意数据库,如:Sqlite,Access,SQL Server,Oracle,MySQL,DB2,Sybase等。下面我们就PageOffice和数据库的结合使用展开详细论述。

一.动态填充数据库中的数据到文档中

以JAVA语言,Word文档,Sqlite数据库为例:

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
	poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); 
    
	// 连接数据库并获得数据库中的字段值
    Class.forName("org.sqlite.JDBC");
    String strUrl = "jdbc:sqlite:"+ this.getServletContext().getRealPath("demodata/demo.db");
	Connection conn = DriverManager.getConnection(strUrl);
	Statement stmt = conn.createStatement();
	ResultSet rs = stmt.executeQuery("select * from user where id =1”);
    if (rs.next()) {
		String name=rs.getString(“name”);
        String deptNum=rs.getString(“deptNum”);
	}
	rs.close();
	conn.close();
    
    // 将获取的数据填充到word文档只读的数据区域中
    WordDocument doc = new WordDocument();
	DataRegion dataRegion1 = doc.openDataRegion("PO_userName");
	dataRegion1.setValue(name);
	DataRegion dataRegion2 = doc.openDataRegion("PO_deptName");
	dataRegion2.setValue(deptNum);
    
    // 把WordDocument对象交给PageOfficeCtrl对象处理
	poCtrl1.setWriter(doc); 
	poCtrl1.webOpen("doc/test.doc", OpenModeType.docNormalEdit, "张三");

二.以流的形式读取数据库中的文件

以JAVA语言,Word文件,Sqlite数据库为例:
1)打开文档的Stream.jsp页面:

    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
	poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); 
	……
	poCtrl1.setSaveFilePage("SaveFile.jsp?id=1");
	poCtrl1.webOpen("Openstream.jsp?id=1", OpenModeType.docNormalEdit, "张三");

2)下载文档的Openstream.jsp页面:

    String id = request.getParameter("id");
	Class.forName("org.sqlite.JDBC");
    String strUrl = "jdbc:sqlite:" + this.getServletContext().getRealPath("demodata/DataBase.db");
	Connection conn = DriverManager.getConnection(strUrl);
	Statement stmt = conn.createStatement();
	ResultSet rs = stmt.executeQuery("select * from stream where id = "+ id);

	if (rs.next()) {
		//******读取磁盘文件,输出文件流 开始****
		byte[] imageBytes = rs.getBytes("Word");
		int fileSize = imageBytes.length;
		response.reset();
		response.setContentType("application/msword");
		response.setHeader("Content-Disposition","attachment; filename=down.doc"); 
		response.setContentLength(fileSize);
		OutputStream outputStream = response.getOutputStream();
		outputStream.write(imageBytes);
		outputStream.flush();
		outputStream.close();
		outputStream = null;
		//******读取磁盘文件,输出文件流 结束*************
	}
	rs.close();
	conn.close();

注:该示例的完整代码和详细演示请参考Samples或者Samples4的
二、2、打开保存数据库中的文件(以Word为例)

3.1

注:不推荐把Office文件保存在数据库字段中。这样做的结果,一是影响数据库检索速度,二是增加了代码的复杂度,如果出现文件损坏的问题不容易排查问题的原因。

三.获取文档的纯文本或者二进制流数组保存到数据库

以JAVA语言,Word文件为例,保存文档的SaveFile.jsp页面的代码:

    FileSaver fs=new FileSaver(request,response);
    // 返回控件提交的文档二进制流字节数组
    byte[]  bytes=fs. getFileBytes();
    // 获取文档的纯文本内容,不带任何附加格式。
    // 如果把此文本字符串保存到数据库字段,可以简单利用SQL语句轻松实现文档管理中的全文检索功能。
    String  fileText=fs. getDocumentText();
    //连接数据库,将控件返回的文档纯文本或者文档二进制流数组保存到数据库,此处代码略。
    ……
    fs.close();

四.获取文档指定区域的数据保存到数据库

以JAVA语言,Word文件为例,保存数据的SaveData.jsp页面

    // 使用com.zhuozhengsoft.pageoffice.wordreader包中的WordDocument类
    WordDocument doc = new WordDocument(request, response);
    // 获取提交的数值
    DataRegion dataUserName = doc.openDataRegion("PO_userName");
    DataRegion dataDeptName = doc.openDataRegion("PO_deptName");
    // 连接数据库,将获取的数据区域的数据保存到数据库,此处代码略。
    …….
    doc.close();
分享到:
评论

相关推荐

    PageOffice_4.3.0.3_PHP (1).zip

    PageOffice,一款改变传统办公方式的软件,给各种管理软件系统和网站应用添加在线Office能力,让用户远离上传下载的烦恼,开创局域网在线Office办公的新时代, 卓正软件三年时间倾力打造,PageOffice 4震撼来袭,...

    PageOffice 基础教程.pdf

    这些功能的实现依赖于PageOffice如何与数据库交互,并且教程解释了SaveDataPage和SaveFilePage这两个关键对象的用途及其区别。 教程强调了为什么采用弹窗方式打开文件,并且介绍了如何调用ZoomSeal签章系统中的印章...

    PageOffice产品简介1

    PageOffice 是北京卓正志远软件公司自主研发的一款具有自主知识产权的软件产品,旨在提供在线编辑 Office 文档、动态填充、动态提交功能的通用组件库。该产品能够帮助 Web 开发人员轻松实现在网页中嵌入微软 Office ...

    GPS在卓正露天煤矿边坡变形监测中的应用

    为了保证准格尔旗卓正露天煤矿在技改过程中的边坡安全,依据GPS全球定位系统作业规范和相关行业标准,结合卓正煤矿实际情况,利用GPS对卓正露天煤矿排土场边坡进行了变形监测。包括基准点和监测点的确定、监测方法、...

    北京知名房地产策划顾问及营销专家卓正伟业活动策划案.pptx

    卓正伟业地产综合服务机构,作为一家专业的房地产服务商,涵盖投资、策划、推广和销售等多个领域,并与多家知名开发商建立战略合作关系。公司拥有完善的服务架构和丰富的业务覆盖范围,秉持“勤能育卓”的企业精神和...

    GPS在卓正露天煤矿边坡变形监测中的应用.pdf

    标题和描述中提到的是“GPS在卓正露天煤矿边坡变形监测中的应用”,这涉及到的是一个具体的应用案例,即如何使用全球定位系统(GPS)来监测露天煤矿边坡的安全状况,确保在技术改造过程中的稳定性和人员设备的安全。...

    后端技术 电子合同+电子签章

    PageOffice产品支持PC端Word文档在线处理的所有环节;MobOffice产品支持了移动端领导审批和领导盖章的功能。支持PC端和移动端对文档审批和盖章的互认。然后此次博客中使用的卓正软件的电子签章采用自主知识产权的...

    电子签章简易平台使用说明

    用户也可以参考 PageOffice 提供的示例代码调用 ZoomSeal 签章类开发自己的签章管理模块。但是,用户不能直接访问印章数据库,印章数据库的表及字段可以合并到用户的项目数据库里,但不能修改表结构及字段,以免造成...

    asp .net 实现word文档在线预览

    1. **Office-Tools**:这可能指的是Microsoft Office Interop库,这是一个允许.NET应用程序与Microsoft Office应用程序(如Word)进行交互的接口。通过这个库,开发者可以编程方式打开、编辑和创建Word文档。然而,...

    2018保定年终楼市白皮书.doc

    2018年,保定市的开盘次数达到了历史性的新高,共有43个楼盘开盘59次,与前一年相比,开盘项目增加了104.76%,开盘次数上升了156.52%。开盘活动主要集中在传统销售旺季,如“金三”、“五一”、“金九”期间,以及...

    蛇口网谷调研报告1011.docx

    时间:2014年10月11日 项目概况 蛇口网谷是南山区政府与招商局蛇口工业区联手推出的一个融合高科技与文化产业的互联网及电子商务产业基地。核心区域占地面积约20万平米,规划建筑面积约42万平米,总投资约26亿元,...

Global site tag (gtag.js) - Google Analytics