WORD数据交互(精选7篇)
WORD数据交互 篇1
0 引言
随着企业信息化的发展,信息系统已在各行各业中得到广泛应用。信息系统中数据的存储形式多种多样。现有的数据存储方式主要包括以数据库形式存储的结构化数据和以文本、图片、图像、视频等形式存储的非结构化数据。其中,Word文档以其传递简便性、使用广泛性和良好的用户交互性,成为企业存储数据的主要方式。Word文档这类半结构化的数据在信息系统中不方便使用,结构化的数据使用起来则方便很多。因此,如何解决信息系统中Word文档数据的抽取问题,即怎样将Word文档中的数据提取到数据库,以方便信息系统使用,成为一个值得关注的问题。
目前,Word数据提取到数据库的方案有很多。文献[1]中介绍的非结构化Word数据表与RDB间的存储转换,通过Word PIA对象操作Word表,解决了关系数据库与Word表格之间的数据转换问题,但没有包含整个Word中数据抽取到数据库的方法;文献[2,3]提出的基于XML的数据交换机制是目前数据转换采用的主要方法,解决了大型企业中多种数据源或数据文件的转换集成问题,但对于只需抽取Word文档中部分数据的情况并不适用,另外该方法需要借助中间文件XML。
本文提出的基于DOM和VBA的Word文档数据交互式抽取可以实现对Word中所有数据的抽取并存入数据库,无需经过中间文件的转换,并且Word中数据项与数据表中字段的对应关系可以在抽取时指定,提高了交互性和灵活性。
1 Word文档对象模型及VBA
Word 2003及更高版本有着诸多优点:提供一棵与图形用户界面中的被操作对象相对应的编程对象的模型树Word DOM(Word文档对象模型);支持嵌入式脚本VBA通过Word DOM对文档对象的自动控制;提供文档保护功能以避免文档被直接编辑;具有文档属性等特殊的数据存储形式等。利用这些特性,我们可以在Word文档上实现辅助填写、自动检查、形式保护、内容导出等一系列新功能,开发出基于Word文档的集成化应用程序。本技术所涉及到的主要对象是Bookmark(书签)对象和Range(区段)对象。Bookmark对象定义了文档中的一个起始插入点和一个终止插入点,形成一个可读可写的区段。
VBA是微软办公套件共用的与全集成的开发环境,提供一个Microsoft Visual Basic编程语言特色的子集。它的特色在于,可嵌入到宿主文档(如Word文档)中,通过宿主的DOM自动控制其文档对象,并提供装载着丰富的Windows基础控件(如文本框、组合框等)的用户窗体,来接受用户操作,对其进行处理,进而实施对文档的读写与控制。
2 Word文档数据抽取方案设计
2.1 数据抽取流程及操作类
该方案的主要思想是通过转换程序调用Word文档中编写好的宏函数,获取Word文档中所有窗体域的名称,然后根据用户制定的提取规则将窗体域中的内容存入到数据库对应的表字段中。主要流程如图1所示。
该方案用到的主要操作类有操作Word文档的Word Util类、连接数据库的DBUtil类和用户交互的Show Form类,还用到了Word DOM中的This Document。他们之间的关系如图2所示。
2.2 数据抽取要点分析
2.2.1 宏函数的反射调用
转换程序调用Word文档中的宏函数是通过反射实现的。反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。在本技术中反射调用的方法如下:
2.2.2 数据库中表的获取
转换程序获取数据库中的表是为用户制定窗体域和表字段之间映射关系服务的。下面给出了在SQL Server数据库获取数据库中表的算法,在.NET平台下实现,添加并引用ADO.NET程序集。
算法描述如下:
算法1获取数据库中用户表算法
3 Word文档数据抽取的实现
3.1 定制Word模板
分析需要进行数据提取的文档,整理出需要存入数据库的部分,并给每一部分命名无重复的名称Ni,将名称Ni加入到集合A中。在Word文档(模板)中添加窗体域,并在窗体域选项中将域设置栏中的书签设置为Ni,将Ni从集合A中删除。重复上一步骤直到集合A中没有元素为止。为了方便用户填写,可以使用用户窗体来帮助用户填写,并提供搜索和提示功能,如图3所示。用户窗体的编写需要在Word模板中的Visual Basic编辑器内进行。首先插入用户窗体,填充用户窗体的内容,编写事件处理函数;接着编写显示该用户窗体的宏函数;最后在需要显示该用户窗体的窗体域选项中将运行宏栏里的插入点移入时设置为上一步编写的宏函数。
同时,为了保护编写好的Word模板不被用户更改、破坏,使得用户在使用时只能根据模板填写内容,而不能对模板进行修改,我们可以给Word模板添加保护文档的功能。在Word模板菜单栏中的工具菜单下选择文档保护,根据提示进行,就可以给Word模板添加文档保护功能。
3.2 编写宏函数
编写的宏函数将被转换程序调用,转换程序通过调用它们得到Word模板中窗体域的信息。这些宏函数是在Word模板中的Visual Basic编辑器里进行的。它们可以分为两大类,第一类是以字符串的形式返回Word模板中所有窗体域名称(集合A中所有的元素)的函数。第二类是返回指定窗体域内容的函数。它们通过模板书签获得窗体域的内容,并以字符串的形式返回。第二类宏函数的命名规则为get+首字母大写的窗体域名称(集合A中的元素),遵循这一规则是为了和转换程序生成宏函数名的规则相一致。为了使转换程序能够调用这些宏函数,这里的宏函数应该是Public类型的。第二类宏函数的例子如下所示:
3.3 建立数据表
这里建立的数据表主要用于存储窗体域和表字段之间的映射关系。表结构如表1所示。一般地,存储Word文档内容的表是需要根据信息系统进行设计的。
3.4 编写转换程序
编写转换程序是在Visual Studio 2008中进行的,选用的开发语言为C#。新建项目后添加Microsoft.Office.Interop.Word的引用,编写上文中介绍的类。运行效果如图4所示。
4 Word文档数据抽取实例
本文提出的基于DOM和VBA的Word文档数据交互式抽取方案在教学管理信息系统中取得了良好效果。采用该系统之后,实现了Word文档数据在管理信息系统中的灵活应用,避免了同样数据的重复录入,极大地节省了人力和时间。图5给出了本文方法和中间格式转换方法提取数据的时间,测试环境为:Intel Pentium 4 CPU 2.80GHz,1.00GB内存,操作系统为Windows XP。
从图中可以看出,随着数据量的增加,本文方法时间变化幅度不大,而基于XML的数据转换方法增幅较大。原因分析如下:基于XML的数据转换需要从XML文档中检索出数据,文件小时,耗时很短;但随着数据增加,文件增大,时间大幅增长。而本文方法是通过宏函数提取指定窗体域的内容,不需要检索文件,数据量的大小与转换时间关系不大。并且本文方法可以抽取指定的内容,而非全部的文档数据。
5 结语
本文着眼于实际应用需要,分析了现有解决方案中的不足,提出了基于DOM和VBA的Word文档数据交互式抽取应用技术,给出了关键问题的解决方案,并实现了整个方案。利用该技术开发的Word模板体积小、不依赖支撑文件,并具有辅助填写、自动检查的功能。可以根据用户的实际需要进行交互式抽取,提高了抽取数据的灵活性。Word内容存入数据库时无需中间文件转换。该技术在实际应用中取得了良好的效果。
参考文献
[1]黄蔚,张璟,等.非结构化Word数据表与RDB间的存储转换[J].计算机工程,2009,35(20):37-40.
[2]Combi C,Pozzi G.Building XML Documents and Schemas to SupportObject Data Exchange and Communication[C]//Proc.of the 16th In-ternational Conference on Database and Expert Systems Applications.Copenhagen,Denmark[s.n.],2005:353-364.
[3]Tseng F S C,Chen Chiawei.Integrating Heterogeneous Data Warehou-ses Using XML Technologies[J].Journal of Information Science,2005,31(3):209-229.
[4]John M.VBA For Dummies[M].Indianapolis:Wiley Publishing,2007.
[5]王小科,等.C#开发实战宝典[M].北京:清华大学出版社,2010.
数据交互式舞台监督系统的设想 篇2
【关键词】舞台监督;数据交互;内部通话;cue表
文章编号:10.3969/j.issn.1674-8239.2015.03.008
【Abstract】Since the disadvantages of traditional stage manage system, a method of data interactive stage manage system is proposed. The method we proposed is compatible with traditional functions of stage manage system ,including intercom and video monitoring. Meanwhile, relevant data of lighting system, acoustic system and mechanical system are transmitted to data interactive stage manage system through Local Area Network (LAN). Through data communication, status of equipment for lighting system, acoustic system and mechanical system can be monitoring during the show. Through cue data, stage manager can dispatch command automatically.
【Key Words】stage manager; data interactive; intercom; cue table
1 引言
舞台监督系统是舞台监督人员实现各种剧目排练、演出合成、彩排、正式演出的技术系统。该系统由不同类型的视频监视、内部通话单元组成,是一个高度集成化的系统。现代剧院、电视台、通信指挥中心、电视转播车、多媒体制作室及工程试验场中的指挥调度室通常配置的舞台监督系统,一般包括以下功能:有线内部通信、无线内部通信、灯光提示、演出呼叫、视频监视、摄像机控制、计时器、时钟、场灯控制、数字开场铃、演出调度控制(灯光、音响、舞台机械、舞美、演员、剧务、布景、道具)等。
目前,该系统的监督与调度功能主要通过内部通话与视频监视系统完成,所有监督与调度命令的发出与接收均可以视为人工进行。演出过程中,灯光、音响或机械设备的任何问题均靠分布于剧院中不同位置的灯光师、音响师、机械师和舞台监督的“眼看耳听”来发现,这种“事后发现”意味着演出过程中出现的“演出事故”已经成为事实发生状态,舞台监督所谓的解决方案实际上仅能起到事后弥补的作用。尽管该过程能够最大限度地弥补“演出事故”,但是仍然无法充分地执行导演的演出意图。
目前,相关研究提出了一些关于舞台监督与调度的可行方法。如,在剧场中对实时电视监控图像采集点进行周密的布置,实现全面的演出监视[1];构建网络化剧院内部通话系统,提高剧院内部通话的实时性和可靠性[2];提高舞台监督的个人素养,保障演出的顺利进行[3]-[7]。但是,这些方法只是围绕如何更好地进行事后处理,保证演出尽可能按照理想状态进行演出。因此,笔者曾在《舞台监督系统研究》(发表于《演艺科技》2014年第11期)一文中提出:“能否围绕传统的指挥与调度寻求更智能化、实时性更强的调度方法开展相关研究。”鉴于此,笔者在本文中将针对现有舞台监督与调度系统的这些不足,提出一种数据交互式舞台监督系统的设想,在兼容现有舞台内部通讯、视频监督等功能的同时,通过从舞台灯光系统、音响系统、机械系统中获得各个系统的相关数据,实现对灯光、音响机械系统设备运行状况的监督与演出的调度。
2 舞台监督与舞台监督系统
舞台监督系统一般在演出合成、彩排、正式演出时供舞台监督使用。能够辅助舞台监督实现两项基本任务:监督演出与演出调度。
2.1 舞台监督系统的作用
在演出合成与演出彩排阶段,舞台监督通过内部通话系统进行演出合成的调度,主要是调度灯光、音响、机械合成的效果与节奏,使得灯光、音响、机械三个专业形成各自的演出合成cue表(即变化的程序)。在演出准备时,舞台监督通过内部通话系统了解灯光、音响、机械等技术部门的准备、到位情况;进行演出时,一边对各个技术部门进行演出场景调度,包括时间节点的把控以及灯光、音响、机械场景变换的调度(俗称“叫cue”),一边观察演出进行过程中灯光、音响、机械设备是否按照期望的效果正常工作。各工种的技术人员在操作中若遇到问题,也可以通过舞台监督系统中的内部通话子系统报告给舞台监督,再由舞台监督提出解决方案。
若舞台监督台能够提前或实时获取相关演出数据并进行显示,则可以直接得到比肉眼观察更为准确的信息,从而在演出彩排、正式演出过程中提前预置方案,并能及时做出决策,便于处理突发情况。
2.2 舞台监督关注什么
2.2.1 演出调度cue表
对舞台监督这一职务而言,其任务是保证演出的正常进行,同时,保证演出内容尽量还原导演团队对演出效果呈现的初衷。因此,在演出过程中,舞台监督的重要职责之一,就是按照演出准备过程中的演出场景顺序,进行演出场景调度。一般来说,灯光、音响、机械等技术效果均按照其自身特点设有机械cue表、灯光cue表、音响cue表。
nlc202309041218
在舞台机械控制过程中,机械cue表往往是根据导演的统一要求,按照各类舞台机械运行的前后逻辑,将机械程序按照时间轴的顺序进行编辑,以机械cue表的形式记录下来,并以舞台机械cue程序的形式存储在机械控制系统中,方便舞台机械控制人员进行控制。同时,技术人员将编辑好的cue表内容制作成文案交给舞台监督。机械cue表中描述的内容主要包括cue号、每个cue中运动的设备ID、运行速度、运行位置、运行延迟时间、走cue推杆与控台ID 等,如表1所示。
在舞台灯光控制过程中,灯光设计同样是在导演的统一要求下进行布光,把每一个场景的光效布置出来,由灯光助理来操作灯光控制台,将程序效果以cue表的形式存储起来。cue表中包括了灯光cue号、走cue起止时间、灯光效果描述(有时以实景图代替)等信息,如表2所示。
在舞台音响控制过程中,对于歌剧、舞剧等以音乐为基础的戏剧,演出时,乐队指挥面前的总谱(以多行谱表完整地显示一首多声部音乐作品的乐谱形式)就是实现演出音响不断变化的音响cue表,由乐队指挥根据舞台监督的授意,控制演出的节奏。演出前,舞台监督也会拿一份总谱(相当于普通戏剧演出的提示本),把所有的音响cue号标记在总谱上。
如,英国皇家剧院的舞台监督在演出时,通过内部通话系统对灯光师说:“cue3准备”,灯光师要重复一遍:“cue3准备”。然后舞台监督说:“go”,舞台监督说:“谢谢”,表示确认无误,随即执行cue3灯效。假设舞台机械的cue3动作是升降台升起,升起的起点与终点均是已经编辑存好的程序,舞台监督在总谱上也同样标注出来。可以说,在演出过程中每进行一个演出程序,舞台监督就要与具体的操作人员完成一次交互确认后发出执行命令。这一过程便是舞台监督的演出调度过程。
然而,国内的大部分舞台监督则不同,他们往往不会如此频繁的进行“叫cue”,主要依靠多次排练、合成、彩排过程中舞台监督与具体技术人员的反复熟悉所形成的默契来保证万无一失的演出cue执行。在正式演出中,舞台监督往往不需要“叫cue”,灯光、音响、机械等技术人员经过多次排练,已经能够掌握每个演出效果cue的执行时间,在恰当的时间执行具体的cue即可。一旦出现设备故障或者指定cue未按照执行时间执行时,舞台监督通过内部通话系统呼叫、提醒相关专业技术人员。这种演出调度方式其实是不够严谨的,极易产生演出cue延误或者误操作,甚至是严重影响演出效果。因此,舞台监督在演出中不断发出各种指令,应是舞台管理或者舞台监督的基本职责。
我们设想,若在演出合成阶段,灯光师、音响师、机械师能够将反复修改最终确定的cue表,通过控制台上传给舞台监督台并进行显示,就能够帮助舞台监督更直观、迅捷地掌握演出过程中各个工种的演出节奏,有助于其“叫cue”。与传统的各工种向舞台监督提供纸质化cue表,并由舞台监督在“提示本”上记录相比,这种方式的效率显而易见。
2.2.2 演出监督对象
在演出过程中,舞台监督除了有调度的任务之外,还肩负着监督演出、保证演出正常进行的任务。因此,舞台监督在演出过程中需要着重关注哪些技术环节就显得尤为重要。因此,舞台监督在演出进行过程中监督的对象可以归结为表3。
3 数据交互式监督系统的可行性
实现数据交互式舞台监督,需要将舞台监督系统、舞台机械系统、舞台灯光系统与舞台音响系统通过网络连接。在演出前,舞台监督可以通过网络向灯光、音响、机械系统申请演出cue表;在演出时,可以申请获得演出监督数据,灯光、音响、机械等监督数据即可以通过网络传输给舞台监督系统。因此,数据交互式舞台监督能够实现灯光、音响、机械、监督的技术协同,各个工种之间通过数据交互,能够实现全数据化的演出效果呈现。
然而,该设想在目前的舞台技术领域是否具有可行性呢?是否存在一定的技术壁垒呢?
3.1 舞台机械
在舞台机械控制系统中(如图1所示),机械控制台与可编程控制器连接,实现机械装置的逻辑控制,实现机械装置运行的启动、停止、定位、软上限、软下限的设定等。机械装置的运行依靠电机驱动,速度的调节通过变频器实现。该系统中机械装置的运行数据主要包括速度、位置、载荷等。这些参数也正是舞台监督希望监督的数据,均可以通过分布在舞台机械、电机等位置的位置传感器、速度传感器与载荷传感器实时读取,反馈到舞台机械控制台的监控界面上。因此,如果将舞台监督台与舞台机械控制台通过网络连接,在技术上实现舞台机械状态数据向舞台监督台的实时传输是可行的。
3.2 舞台音响
国内的众多知名剧院往往多采用进口电声系统设备,包括扬声器、传声器、调音台等。采用模拟信号的舞台电声系统[8](如图2所示),数据反馈无法实现。
舞台监督主要关注音量、混响时间和音色这三个部分。数字化调音台可以实现电声系统设备的数字化控制,一场演出中使用的音响通道数量与每个通道的电平值可以在调音台上实时显示,这部分数据自然能够以数据的形式传递给舞台监督台;演出环境的混响时间这一参数除了与音源有关外,还与厅堂尺寸、厅堂墙壁材质以及音源位置等众多因素相关,是确定演出是否及何时在该场所演出的一个基本条件,舞台监督台可以事先获取该数据;音色的好坏与声音的频率特性相关,由于仅靠一条频谱曲线不能完全反映出具体的音质,就需要通过专业设备进行多重数据的测量,如STI指数、频响范围、互调失真度、响度级、C80、谐波等。上述这些都是可测量出来的。
尽管科技的进步推动音响电子产品的成本大幅下降,但是,能够准确测量出音响产品音质与音色并转化为音质数据的工具仍然成本太高,而且不便于演出现场使用,仅留存于实验室实验测试,未得到大量使用。同时,并不是所有的调音师都具备能够解读全部数据的能力。因此,舞台监督通过仪器设备从听觉系统获取音色参数从目前而言是比较困难的。音响的音质数据是一个测量物的表征,目前的音响系统的传声器与扬声器多数还是纯模拟的,模拟器件就会存在大量的不确定性与不可重复性。就目前的听觉系统装备的技术水平而言,要把数据逆向传递给舞台监督也比较难。
nlc202309041218
3.3 舞台灯光
当前,各个灯光厂商开始逐渐推出能够进行数据化交互、反馈的灯光产品。很多演出场所也已经搭建起了网络化的灯光系统,遵循DMX512数字化协议,如图3所示。网络系统中包括了带网络接口的调光台、调光立柜、编解码器、甚至是灯具。
但是,大部分网络化灯光产品数据交互并不完善。如,对于常规灯系统中,常规灯具调光采用网络调光柜,灯控台能够读取接入调光柜的常规灯具的电流、在线状态、温度、开关状态、DMX信息、灯光的调光亮度等数据;对于电脑灯系统,部分网络化灯光控制台可以采用Art-net协议对接入其网络的网络灯光设备进行数据的轮询,申请获取灯具数据。灯光系统通过RDM解码器将灯具的状态数据返回给总控平台,返回数据却仅仅包括灯具的在线状态、地址、温度等数据,缺少舞台监督关注的色温、亮度、色度等数据。
因此,目前的灯光产品能够支持反馈给舞台监督台的数据仅包括一些灯具的开关、在线状态等数据,无法反馈舞台监督关注的色温、色度等数据。此外,网络化调光柜所反馈的常规灯数据可以进行实时传输,而支持RDM协议的电脑灯灯具还无法实现数据的实时反馈,仅能实现半双工的申请、反馈数据。
总之,灯光、音响、机械系统通过网络与舞台监督系统连接,进行数据的交互是可行的,能够为舞台监督提供一定的数据监督功能。但是距离全数字化实时交互尚存在一定的技术壁垒。
4 数据交互式监督方案
随着计算机网络技术在舞台机械、灯光、音响等领域中的应用,灯光控制系统、舞台机械控制系统已经逐渐进入网络化时代。这些系统多采用基于TCP/IP的网络协议,在兼容现有的各系统协议的基础之上,将数字化系统升级为网络化系统,极大降低了传统数字化系统的复杂度。同时,网络化控制数据的数据传输率、数据传输的可靠性也比传统数字化系统有了极大地提高。在这些网络化系统中,众多控制设备与受控设备配置了网络接口。基于以上分析,在兼有传统内部通话、视频监视等功能的基础上,在舞台监督台上进行统一、实时的数据交互式舞台监督与调度,并能够获得必要的状态数据的反馈显示,可以使舞台监督能够智能化地生成调度命令,自动分发调度命令;同时,通过获取的设备状态数据第一时间发现问题,不用别人传达,得到比肉眼观察更为准确的信息,从而在演出过程中提前做出决策,便于突发情况的处理,如图4所示。
在舞台监督系统与各个专业之间的数据交换遵循以太网通讯协议,以网口作为接口,构建局域网。灯光、音响、机械控制系统接收到来自舞台监督系统的数据请求后,根据请求类型和请求时间(演出前为非实时数据,演出时为实时数据)实时或非实时发送数据,并从舞台监督系统接收指令来完成相应操作。舞台监督系统对接收到的数据进行处理、比对、封装,系统软件交互界面上基于ActiveX控件的系统显示异常所在部位以及参数,以便舞台监督能在第一时间做出判断,保证演出能顺利进行。
因此,数据交互式舞台监督系统的数据交互功能可以以可视化软件界面的形式进行监督与调度,共分为系统连接模块、演出数据监督模块、演出调度模块与紧急预案处理模块如图5~图8所示。
其中,系统模块与工作流程如下:
(1)系统连接模块:系统通过系统连接模块分别与灯光、音响、机械系统建立通信。
(2)演出调度模块:在演出合成完毕阶段,舞台监督向灯光、音响、机械专业申请演出cue表,各个专业将合成完毕的cue表数据上行传输给舞台监督系统,由舞台监督系统进行cue表合成,生成演出节目调度总表,这样,传统的、纸面化的、文字描述的舞台机械cue表、灯光cue表、音响cue表可以用系统数据传输的形式直接传输到舞台监督系统,自动生成总cue表,替代传统的演出提示本,在演出时按照该表进行演出节奏的把控,按照演出时序,自动将舞台效果控制命令帧发送给指定设备,指定设备接收到控制帧后自动识别命令并进行处理。此外,该表也可以在演出前分发到各个专业,辅助各专业控制人员进一步了解如何与其他技术人员进行演出效果的协同。
(3)演出数据监督模块:系统在演出期间实时监视各种效果设备的运行状态,一旦出现设备的运行状态与演出预设的效果cue表描述有出入,则能够实时在演出数据监督模块中预警显示具体的设备类别、设备号,以方便舞台监督发现演出异常。
(4)紧急预案处理模块:该系统还具备应急预案模块,当出现演出或者设备异常时,能够向各类效果设备发送应急预案数据,及时调度相关事故设备恢复正常状态或者进行特定的应急处理,保证演出的正常、顺利进行,尽量降低演出事故发生的概率。
5 结语
目前,数据交互式监督系统方案还仍然处于探讨与实验阶段,距离真正应用于现代剧院、演播厅等演出场所尚有一定差距。随着文化与科技的不断融合,服务于舞台演出监督与调度的舞台监督系统在演艺领域的科技含量还有众多需要提升的地方。同时,也期待灯光、音响、机械等各个专业的研发产品不断推陈出新,不断研发兼容带网络、数字反馈功能的演出效果呈现装备,为实现演出协同控制的网络化提供技术支持,使得文化演出的视觉呈现、听觉呈现、运动呈现的控制与调度协同向网络化、大数据领域发展。
注:本文获国家科技支撑计划重大项目“文化演出效果呈现关键支撑技术研发与应用示范(2012BAH38F00)”子课题“舞台监督与调度系统接口协议研究(2012BAH38F01-04)”与“中国传媒大学工科规划项目”课题“面向演艺装备业的科技服务平台架构研究”(3132014XNG1424)的资助。
参考文献:
[1]胡纯有. 舞台监督电视监控要点[J]. 演艺科技,2014(5).
[2]任慧,周亦琛,李真,高甜. Research on networking of stage surveillance system[J]. Applied Mechanics and Materials Vol.,2014(5).
[3]丁婧. 浅谈舞台监督在现代舞台演出管理中的重要性[J]. 理论前沿,2014(9).
[4]罗兰. 浅谈话剧《四世同堂》的舞台监督工作[J]. 戏剧丛刊,2013(5).
[5]祝文思. 舞台监督岗位的职责及作用[J]. 神州,2013(1).
[6](美)劳伦斯·斯特恩,李雯雯译. 舞台管理[M]. 北京:北京大学出版社,2009.
[7](英)汤玛斯·凯利,杨淑雯译. 舞台管理[M]. 台湾:台湾技术剧场协会,2011.
[8]梁华. 舞台音响灯光设计与调控技术[M]. 北京:人民邮电出版社,2010.
[9]Entertainment Services and Technology Association. ESTA BSR E1.17 CP/2003-1007.Entertainment Technology - Architecture for Control Networks [EB/OL].http://www.esta.org/tsp/,2005-10-14.
WORD数据交互 篇3
●单项选择题的制作
方法一:单击“查看答案”按钮给出答案。如图1所示, 每一道题包括题目、选项 (4个) 、查看答案按钮。具体制作过程如下。
(1) 题目:视图→工具栏→控件工具箱→文本框 (TextBox) , 在里面输入题目, 可右键单击找到该控件的属性, 在其中修改其颜色、字体、字形等属性。
(2) 选项:控件工具箱→选项按钮 (OptionButton) , 选项按钮的特点是在同一张幻灯片上只能选择其中的一个。修改其caption属性为“A、孔子”, 其他选项可以复制第一个后再修改它们的caption属性。
(3) “查看答案”按钮:控件工具箱→命令按钮 (CommandButton) 。因为要实现的是选择某个选项后, 单击“查看答案”给出正确答案, 所以此时需对此按钮的VBA进行编辑。双击或者右键单击这个按钮, 进入VBA编程环境。在Private Sub CommandButton1_Click () 和End Sub语句间插入如下代码:
ex=MsgBox ("正确答案是A、孔子。", vbOKOnly, "提示") ……当单击按钮时, 出现“提示”信息框, 上面给出“正确答案是A、孔子”的答案, 并有一个确定按钮, 如图2所示。
方法二:选择某一选项时给出交互答案, 提示正确与否, “查看答案”按钮给出正确答案, 如图3所示。
第 (1) 、 (2) 、 (3) 与方法一同, 区别是要在每一个单选项的VBA中输入代码, 以图中第二小题的A错误答案 (OptionButton5) 、D正确答案 (OptionButton8) 为例。在OptionButton5中输入代码:
If OptionButton5.Value=True Then……当此选项按钮被选择
ex=MsgBox ("答案错误, 请继续努力。", vbOKOnly, "提示") ……弹出“错误”提示信息框, 如图3所示。
●多项选择题的制作
(1) 如图4所示, 制作方法与单选同。
(2) 中使用控件工具箱→复选框 (CheckBox) , 它的特点是在同一页面中可同时选择多个。修改其caption属性为“A、韩愈”, 其他选项可复制第一个再修改它们的caption属性。
(3) 多选题要有多个答案同时满足条件, 因此“查看答案”按钮的设置略有不同, 以第一小题为例, 正确答案是ACDE, 应输入代码:
(4) “清空答案”按钮的输入代码:
●判断题的制作
判断题的单选项也是选项按钮, 所有的设置与单选题类似, 只不过两个单选项为“√”和“×”, 这两个符号可以用插入特殊符号→数字符号, 先插入到文本框里, 再复制到caption属性中, 如图5所示。
●填空题的制作
题目的设置同单选题, 填空的地方用控件工具箱→文本框 (Text Box) , 其他文字用普通文本框, 如图6所示。
(1) “清空答案”按钮与选择题不同, 输入的代码应该是:
●简答题的制作
主要是文本框的设置, 简答题作答通常只要有几个关键的词语表达出来就算正确, 本着这个思想, 我们给Text Box8输入如下代码:
WORD数据交互 篇4
随着计算机技术和网络的发展, Web以多种方式进入人们的生活。数据库发布是当前Web技术最常见的应用之一。通常数据动态网页需要通过客户端与服务器的交互操作实现, 用户向服务器发出请求, 服务器使用ASP、CGI、PHP、Java Applet、Cold Fusion等网络脚本程序以获取用户提交的信息, 脚本程序在访问数据库后将处理结果返回给用户, 最终生成动态页面。这种方式一方面要求服务器提供上述服务, 另一方面由于这种方式对服务器的依赖性很强, 会加重服务器的负担和网络拥挤程度。在使用方面, 由于用户的每一次请求都必须依赖于服务器的处理才能显示在客户端, 这样多次往返于服务器, 必定减慢了查询速度。
基于以上原因, 根据浏览器Internet Explorer 4.0及以上版本具有接收、放置、计算和显示等数据认知的能力, 笔者将数据绑定技术 (Data Binding) 和表格数据控件TDC (Tabular Data Control) 相结合, 利用它们访问有限定符文本文件, 以HTML文件为模板显示数据, 并通过对已缓冲至本地机的文本文件操作, 实现访问客户与数据驱动页面的动态交互功能。该方法不依赖于ASP、CGI等服务器端的处理实现动态交互, 减少了动态网页对服务器的依赖程度, 从而减少了服务器的压力和缓解了网络拥挤。下文将进行详细的介绍, 以供参考。
1 数据绑定技术
数据绑定由4个部分组成:数据源对象 (DSO Data Source Object) 、数据引用 (Data Consumer) 、绑定代理 (Binding Agent) 和列表 (显示) 代理 (Table Repetition Agent) 。数据源对象提供数据传输、操作和通过脚本访问数据的能力;数据引用一般指Web页面元素, 它定义数据如何显示等;绑定代理用于数据识别和维护;列表 (显示) 代理用于保证列表数据的正确引用。
2 TDC组件
TDC是IE 4.0及以上版本提供的一个内置表格数据控件, 利用它, 用户客户端的浏览器可以从服务器端接收到把定界符文本文件作为数据源的文本型表格数据, 并根据需要可以进行不同方式的显示, 如分页显示、逐条显示、排序、过滤、查找等, 从而实现在本地机的客户端对数据的动态控制功能。TDC实现数据动态网页的所有执行过程都在客户端中进行, 不依赖于服务器端的网络脚本程序的逻辑处理, 减少了数据绑定到网页HTML 元素中动态网页对服务器的依赖程度, 由此减轻了服务器的负荷和缓解了网络的拥挤。
2.1 TDC控件
TDC称为表格式数据控件, 是一个ActiveX控件, 文件名为tdc1ocx, 该文件位于C:\WINNT\System32\tdc1ocx。ActiveX控件是指一些可执行的代码或一个程序, 比如一个.EXE、.DLL或.OCX文件, 通过ActiveX技术, 程序员就能够将这些可复用的软件组装到应用程序或者服务程序中去, 嵌入到网页中, 随网页传送到客户的浏览器上, 并在客户端执行。通过编程, ActiveX控件可以与Web浏览器交互或与客户交互。
TDC控件标识符是CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83。TDC控件提供访问有定界符文本文件的能力, 拥有Datasrc、Data-formats、Fielddelim、Textquqlifier、Rowdelim、Sort、Filter和Useheader等属性及Reset方法, 并可通过TDC对象的ID.recordset.{Properties|method}访问相应的Recordset集的属性和方法。
2.2 作为DSO的文本型表格数据
表格一般和数据库对应, 在有定界符文本文件中的一行相当于数据库的一个记录, 每行中由定界符括起来的字符串相当于记录中的字段。在TDC引用的文本文件中有3种定界符:文本限定符、字段限定符和行限定符。假设文本文件GetNew-AQList.txt中有如下内容:
IsSelected, HasRead, DiffDepartment, Department, name, duty, sort, class
'是', '是', '六矿', '调度室', '王丙', '聂军, '采煤', 'AAA'
'否', '是', '六矿', '机电科', '王丙', '聂军', '采煤', 'AAA'
'否', '否', '六矿', '机电科', '聂军', '李二', '采煤', 'AAA'
'否', '否', '六矿', '机电科', '李二', '采煤', 'AAA'
'是', '是', '六矿', '机电科', '李二', '采煤', 'AAA'
第一行为字段的名称, 第二~六行为5个记录。其中, 单引号 (') 是文本限定符, 逗号 (') 是字段限定符, 行限定符通过换行来实现。如果一条记录中有字段值是空, 也可以使用空格来代替, 例如上面的第五、六条记录中, 字段“duty”的值都为空。
3 TDC的实际应用
结合在鹤壁煤业 (集团) 公司煤矿安全隐患信息动态跟踪管理系统中的实际应用, 详细介绍如何将TDC、DSO和HTML元素组合在一起实现动态数据网页。
3.1 数据源的设定
在鹤壁煤业 (集团) 公司煤矿安全隐患信息动态跟踪管理系统中, 由于要应用到多个表中的大量数据, 而且这些信息在隐患信息数据库中已经有记录, 如果再建立数据库记录将会造成数据冗余。而如果对每条信息都用综合查询进行检索, 将会增加服务器负担。为了减少数据冗余和方便查询, 先用复合查询查出需要用到的字段, 再构建出一个临时数据库, 将需要的信息插入里面, 需要用到时在临时数据库中检索即可。
3.2 在Web页中引用TDC组件
在Web页调用TDC控件, 需要在Web页的头部或主体内用〈Object〉…〈/Object〉语句建立TDC对象的实例, 先定义一个对象, 名为List, 其中的数据源从Get-NewAQList.asp页面中获得, Get-NewAQList.asp页面中的数据即为查询出的临时数据库的信息, 然后调用List对象, 将其中的信息显示出来:
其中, ID为对象指定一个名称, 以便在以后的Web元素中引用;参数DataURL指定TDC读取数据的文本文件;参数FieldDelim定义字段限定符, 标识数据字段结束的字符, 默认值为一个逗号;参数Charset为数据文件描述字符的字符串表达式;参数TextQualifer定义文本限定符, 用来在文件中描绘文本字符串的一个字符;参数UseHeader的Ture和False指定在文本文件中是否有字段名定义。
3.3 将数据绑定到Table元素
Table是一种可以进行多值绑定的HTML元素, 〈Tr〉…〈/Tr〉对应1个记录, 〈Td〉…〈/Td〉对应1个字段, 在这2个元素对中, 利用可以单值绑定元素引用数据, 在页面上显示具体数据内容。如:
在〈table〉..〈/table〉中输出的就是需要的网页动态数据。在上面的代码中, 利用数据引用组件的DataSRC、DataFLD及DataFormats、DataPageSize属性, 通过ID属性将文本文件的数据内容绑定到HTML元素, TDC控件自动将符合要求的数据内容显示在页面中。其中DataSRC用来指定要绑定到HTML元素上的DSO, 其值为#嵌入网页的数据对象的ID号, 例如DataSRC=#List;DataFID向HTML元素指定要绑定的数据源中的列名, HTML元素将显示该列中的数据, 即某一字段需要显示的数据;DataFormats设定数据格式, 如html、text等。缺省情况下, Table总是显示记录集中的所有记录, 当数据记录很大时, 可能造成网页过长, 这时可以利用DataPageSize属性限定Table每次显示的记录数, 然后利用Table的NextPage和Previous Page属性来依次显示记录集的所有记录。
3.4 TDC的其它属性和语法
TDC的其它属性和语法如表1所示。
4 结语
本文以鹤壁煤业 (集团) 公司煤矿安全隐患信息动态跟踪管理系统为例, 探讨了如何利用TDC数据绑定实现动态数据网页的方法。数据绑定和TDC控件改变了在Web页上数据访问的性质, 提供了脱离服务器端有关处理逻辑的支持而实现动态Web页面的方法和工具。结合DHTML提供的大量新技术、新方法和控件, 可以对TDC控件和Web页面元素进行更多、更精确的控制, 它的编写简单、灵活控制、易于更新、动态检索等特性, 非常适用于小型动态数据库。实践表明, 该方法应用效果良好。
参考文献
[1]陈立华.TDC数据绑定实现图书馆动态数据网页[J].现代图书情报技术, 2003 (2) .
[2]王国荣.Active Sever Page&Web数据库[M].北京:人民邮电出版社, 1999.
[3]陈媛.用数据绑定实现高效率动态网页[DB/OL]. (2007-12-26) [2009-03-07].http://www.sudu.cn/info/ht ml/edu/20071226/31724.ht ml.
WORD数据交互 篇5
随着软件开发技术和网络技术的发展, 无论是Web应用程序拟或桌面端应用程序的UI,均以用户的体验为第一考虑要素, Web程序界面的元素丰富多彩, 桌面端应用程序处理数据的高效性, 两者各有长项, 如果取两者之长结合起来, 将会是一个很棒的用户体验, 比如在桌面端应用程序中应用Web的界面元素将是一个可行的选择, 前提是需要提供作为宿主对象的程序语言如VB, .NET, Delphi, Visual FoxPro等与JavaScript之间的数据交互的方法。
介绍了在JavaScript与作为宿主对象的VFP之间, 不同类型数据、对象的双向数据交互的方法探讨, 并给出了初步的解决方案。
2 VFP 与 JavaScript 双向数据交互测试
2.1 两者数据类型的异同点
JavaScript不是强类型的语言 , 这点与VFP相同。前者变 量名大小写敏感, 后者变量名不区分大小写, 这一点在双方传递数据时是需要特别注意的地方, 否则, 很容易出现运行错误而不易察觉原因。
2.2 用于测试的数据类型
(1) 数据发送方: VFP, 数据接收方JavaScript, 数据类型如表1所示: 从VFP到JavaScript。
(2) 数据发送方: JavaScript, 数据接收方VFP, 数据类型如表2所示: 从JavaScript到VFP。
2.3 测试方案
首先自定义一个包含shell.explorer.2对象的VFP form类myformx, 并实例化 其对象testform, 并由JavaScript引用 , myformx定义了两个过程transferVfpDataToJs和receiveDataFro mJs, 前者以集 合传递VFP多种数据 类型到JavaScript, JavaScript解析识别VFP数据并显现结果 (图2); 后者是VFP接收JavaScript传送过来的数据, VFP解析识别JavaScript数据并显现结果 (图3), 其中VFP在解析JavaScript的JSON数据时, 采用了Craig Boyd的VFP的JSON解析类库JSON.VCX, 该类库支持JSON嵌套对象。在http://www.json.org/json-zh.html上有提供。
2.4 VFP 和 JavaScript 的代码
3 数据交互汇总表
如表1, 表2所示。
4 结语
WORD数据交互 篇6
计量经济学在经济学科中的地位日益提高, 成为了一种实证研究或经验研究中不可缺少的工具。随着现代数据采集技术的提高, 出现了越来越多的用于经济科学研究的数据库。一方面, 这为计量经济学的发展提供了现实基础, 另一方面, 数据结构复杂程度的提高也要求计量经济学方法论的新发展, 能够对复杂的大数据集提供合适的建模和估计方法。面板数据模型就是针对于时间序列与横截面混合数据进行建模和估计的一种计量经济学方法, 面板数据模型克服了横截面模型和时间序列模型的一些缺陷, 是现在计量经济学理论与应用研究的一个重要研究方向, 其中交互效应面板数据模型又是近年来面板数据模型的一个重要的发展, 属于计量经济学的前沿研究领域。
二、面板数据模型的不足之处
面板数据模型尽管与时间序列或横截面模型相比具有巨大的优势, 但面板数据模型本身也还是存在一些不足之处, 其中经典面板数据模型中个体效应与时间效应的引入方式就存在可以改进的地方。经典的面板数据模型分为静态面板数据模型与动态面板数据模型。静态面板数据模型就是在解释变量中没有包含被解释变量的滞后项, 这是面板数据模型的早期模型设定形式。以前因为面板数据集的数据采集时间比较短, 面板数据集的数据结构只能以短面板的形式存在。所以由于样本的限制, 很难观测变量的动态调整过程。静态面板数据模型中又分为固定效应模型与随机效应模型。固定效应模型简单来说就是将观测个体的异质性以虚拟变量的形式引入进模型, 将隐形的个体差异显性化从而消除解释变量的内生性, 经典的估计方法包括组内离差估计法与LSDV估计 (虚拟变量最小二乘估计) , 在数学上可以证明组内离差估计与LSDV估计实际上是等价的, 只是LSDV估计结果包含的信息更丰富一些, 能够估计出各个观测个体的个体差异。随机效应模型就是假定了个体效应与时间效应跟解释变量没有内在的联系, 个体差异与时间上的差异是随机出现的。在这样的假定下, 随机效应模型的解释变量没有内生性的问题, OLS (最小二乘估计) 仍然是一致的, 但却不是最有效的, 这是因为随机效应模型的随机扰动项由两部分构成:随机误差扰动项与个体效应或时间效应扰动项, 显然模型的扰动项的方差会更大一些。针对这种情况, 要想得到更有效的估计量, 就只能用FGLS (可行广义最小二乘法) , 即先对模型做一个广义差分变换, 然后再用OLS进行估计。动态面板模型是后来出现的一种模型设定形式, 因为面板数据采集的时间跨度越来越长, 出现了大量长面板的面板数据集, 这样就可以观测变量的持续性和平稳性。平稳性问题要求对面板数据进行面板单位根检验, 持续性的问题要求构建动态面板数据模型。动态面板模型的设定就是往解释变量中引入被解释变量的滞后项, 这样通过滞后项的估计系数就可以测度被解释变量的动态变化性质。例如, 在通货膨胀的动态面板模型中, 滞后项一般可以解释成为通胀的适应性预期, 而滞后项的估计系数可以解释为人们的通胀预期如何影响当期的通胀水平, 这样的建模思路也与经济理论是一致的, 因为根据修正的菲利普斯曲线, 预期对通胀有显著的影响。尽管经典的面板数据模型从模型的设定与参数的估计都有了比较成熟的理论, 但无论是静态面板数据模型还是动态面板数据模型, 个体效应与时间效应的引入方式都是加法效应的引入形式;这种引入形式尽管比较简单, 给模型的参数估计带来了方便, 但却是与现实情况不相吻合的。具体来说, 可以将时间效应看做一个不随个体变化的时间序列数据, 从这样的角度来看, 时间效应就是各个个体面临的一个共同冲击, 但加法形式的引入形式就是默认了每个个体对于这个共同冲击做出了相同的反应, 这显然是与经济常识相违背的。例如, 在分析我国的通货膨胀时, 如果采用的数据是省级面板数据, 则时间效应可以看作是影响各个省通货膨胀的一个共同冲击。比如利率就是一个这样的共同冲击, 利率是由央行调节的, 每个省只能被动的接受给定的利率水平, 因此利率对于各个省份的通货膨胀而言就是一个共同冲击, 显然从经济常识来看, 各个省份的通胀对于利率变化的冲击反应应该是不一样的, 有的省份通胀可能对于利率冲击反应敏感, 有的省份可能反应相对迟钝。但是如果用加法形式的面板数据模型来建模, 也就默认了各个省份通胀对于共同因子冲击的反应是一样的, 因此通常在实证研究中被广泛采用的面板数据模型实际上是存在设定偏误的, 这样的模型设定偏误一个方面是可能造成参数估计的非一致性, 另一个方面是可能会遗漏掉一些重要的信息。
三、交互效应面板数据模型的优势与估计方法
针对于上面提到的面板数据模型存在的不足之处, Bai (2009) 提出了交互效应静态面板数据模型, 简单来说就是将时间效应与个体效应以乘法的形式引入。时间效应仍然可以视为各个个体面临的共同冲击, 而个体效应可以看作每个观测个体对于共同冲击的不同反应。这样对于前面的省级通胀的研究例案例来说, 利率仍然还是各省面临的共同因子冲击, 但交互效应面板数据模型能够估计出每个省对于利率冲击的不同反应。这样的模型设定一方面与现实更加吻合, 减少模型设定偏误;另一方面, 交互效应面板数据模型的估计结果包含更多的信息, 研究结论也更具针对性。例如, 如能估计出利率对于各省通胀的不同影响, 则通胀的调控就更具有针对性, 能够根据各个省的具体情况区别对待。
Bai (2010) 在静态面板数据的基础上进一步提出了交互效应的动态面板数据模型。尽管交互效应动态面板数据模型与交互效应静态面板数据模型只有一字之差, 但交互效应动态面板数据模型的参数估计却变得非常困难。在动态面板数据模型中, 无论个体效应是固定效应还是随机效应, 固定效应的LSDV和随机效应的GLS估计都是有偏的并且非一致的。其原因在于, 动态面板数据模型存在固有的内生性问题。传统的动态面板数据模型的参数估计方法分为三种:差分GMM、水平GMM以及系统GMM。Anderson和Hsiao (1981) 提出了差分GMM, 估计思想是首先将动态面板模型做一阶差分, 然后用被解释变量的高阶水平滞后项作为被解释变量差分滞后项的工具变量进行估计, 差分GMM克服了动态面板模型的内生性问题, 得到了一致估计量。Arellano和Bover (1995) 提出了水平GMM, 其估计思路正好与差分GMM是相反的, 是用被解释变量的差分滞后项作为水平滞后项的工具变量进行估计, 从而消除解释变量的内生性问题。Blundell和Bond (1998) 将差分GMM与水平GMM结合在一起, 将差分方程与水平方程作为一个方程系统进行估计, 称为系统GMM。系统GMM的优势是一个方面提高了估计的效率, 另一方面是可以估计不随时间变化的变量系数。但这三种估计方法都要求随机扰动项具有序列无关的假定。这样的假定在交互效应动态面板模型变得很难成立, 因为Bai (2009、2010) 的估计思路是通过对模型的一个正交投影变换消除掉共同因子, 然后再对不含共同因子的模型做参数估计。这在交互效应静态面板数据模型中是可行的, 但在交互效应动态面板模型中, 这样的估计方法是很难保证估计的一致性。因为在对模型进行正交投影变换时, 实际上也对随机扰动项进行了正交投影变换, 那么经过变换后的扰动项一般会产生序列相关, 这样就会导致传统的动态面板估计方法全都失效。目前对于这个估计难题, 有的采用非线性工具变量估计、有的采用基于仿真的极大似然估计方法进行估计, 这些估计方法都属于计量经济学方法论的前沿研究领域, 是当前的热点研究问题。
四、结论
交互效应面板数据模型是计量经济学领域近年来流行起来的一个新的研究方向, 尽管其理论较为复杂, 但该方法是对传统面板数据模型的一次比较大的拓展, 有其重要的理论价值和广泛的应用前景。特别是针对于我国经济学的研究现状, 绝大部分计量经济学研究都停留在实证分析的研究层面, 而在实证研究中, 越来越多的学者采用面板数据模型作为研究工具。因此, 引入这样与现实情况更为吻合的模型具有重要的意义。
摘要:本文从计量经济学的发展演化历程介绍了计量经济学的一个新的发展方向:交互效应面板数据模型。并且从经典面板数据研究方法的不足之处出发, 指出了这种交互效应面板数据模型在理论与应用研究中的重要性。
关键词:计量经济学,面板数据模型,交互效应
参考文献
[1]Bai.J.Panel data models with interactive fixed effects[J].E-conometrica, 2009 (77) .
[2]Bai.J.Likelihood approach to small T dynamic panel models with interactive effects[J].working paper, 2010,
[3]Anderson, T, C.Hsiao.Estimation of Dynamic Models with Error component[J].Journal of the American Statistical Associa-tion, 1981 (76) .
[4]Arellano, M.and O.Bover.Another Look at Instrumental Variable Estimation of Error Components Models[J].Journal of Econometrics, 1995 (68) .
基于Word文档的数据隐藏方法 篇7
随着Internet和电子商务的飞速发展, 如何实现信息的安全传递成为一个重要的研究课题。传统的信息安全机制普遍基于密码学技术即采用信息加密方式, 这在防止信息泄密的同时, 也暴露了机密信息的存在, 容易引起攻击方的注意, 因此信息隐藏技术作为信息交流中的科学与艺术逐渐成为信息安全领域的一个重要分支。
信息隐藏技术与生物学中动物的保护色机理相似, 将机密信息隐藏于载体中进行传递。根据隐藏载体不同, 信息可以在磁盘、存储卡、网络通信协议、图像、视频、音频及文本等媒体中隐藏。目前基于各类型载体文档信息隐藏技术虽然已有研究, 但大部分偏向于利用影像、音频和视频等文件格式作载体[1,2,3,4,5], 这种方法的优点是载体文件中可以隐藏较多的内容。本文主要研究如何在Microsoft Word文档文件中完成信息隐藏, 这不仅是因为Word文档在日常工作和生活中使用非常普遍, 地位重要, 更重要的是就其物理组成而言不只包含了文字及格式部分, 更可以涵盖影像、声音、超链接、OLE对象等许多内容, 即也可以叠加使用传统的影像、声音的隐藏技术, 应用范围较广。这方面的研究虽然也有, 但非常少, 笔者查到的只有文献[6, 7]。其中文献[6]使用方法并不独立, 其实质上也是使用图像作载体隐藏, 只是插入Word文档后做了第二次隐藏; 本项目从标题上看与文献[7]相似, 但在使用方法上有本质的不同: 文献[7]所采用技术的核心与物理学上的载波相似, 通过被隐藏的信息 ( 要传递的实际内容) 对载体文本格式 ( 文本的行间距、字间距、字体、颜色、下划线等) 做视觉上不易觉察地轻微改变 ( 像无线电传输过程中的调制) 实现信息隐藏。这种技术处理后的文本一旦被有意无意二次修改编辑后, 其被隐藏信息将被破坏, 无法正确恢复提取。本项目基于微软最新公布的复合文档存储规范, 利用载体文档现有物理空间中未使用部分和可选择的加以合理扩充, 设计了一种利用Word文档隐藏秘密信息的解决方案。
1 Word 文档结构分析
1. 1 逻辑结构分析
Word文档属于复合式文件[8]的一种, 由许多虚拟的数据流组成, 如同一个文件系统[9], 结构如图1所示。
图1中stream表示单一的数据存储流, storage是包含有一个或多个stream或storage的存储流 ( 仓库) 。每个复合文档文件都有一个根 ( Root) 仓库Root Entry。
Word文档包含的各类不同形式的信息 ( 除文本本身及相应格式外, 还包括图形、声音、表格以及其他OLE形式的资料 ( 含各自相应的格式控制信息) ) 被通过相应的stream和storage封装起来形成复合文档文件。这些数据流构成一个线性的集合 ( Word文档) , 尽管其在磁盘上的物理存储格式可能会被分割。目前关于复合文档存储方面的现有资料绝大多数以开源的[10]为基础, 推测部分不少。微软公司2008年首次公布了Windows及office复合文档格式规范, 后来又不断多次补充完善[11,12,13]。这里以2013年微软官方资料[14,15,16]为基础介绍。
Word文档没有固定大小, 但至少由五个信息流 ( Stream) 组成: Word Document主数据流、0Table/1Table数据流、Data数据流、Summary Information数据流和Document Summary Informaton数据流。
( 1) Word Document数据流 ( Main Stream)
Word文档中一定存在Word Document流, Word中主要信息在该流中存储。该流主要包含文件信息块FIB ( File InformationBlock) 、文本和来自文件其它部分的引用信息。
FIB没有固定大小, 但一定从Word Document信息流的偏移0x00开始, 它指出了文档中包含的所有数据信息的定位 ( 定位信息包括该信息起始偏移地址和该信息的容量大小两条属性) , 如表1所示。
*注:FIB的具体内容和创建该Word文档时的Microsoft Word主程序版本有关
FIB后是该Word文档中包含的文本信息, 起始位置从FIB中的fc Min ( 微软二进制格式文件中把File Character Position命名为fc) 得到, 长度从FIB. ccp Text得到。
文本信息后是字符 ( Character) 、段落 ( Paragraph) 的格式信息。
Word文档中文本流里拥有相同格式属性的一串连续的字符称为Run of Text, 其属性 ( 字体、字号等) 用CHP ( CharacterProperties) 描述。一个CHP有136位, 采用指令形式 ( 包括操作码和操作对象) 记录和默认 ( Default) CHP的差异 ( 可以减少空间占用) 。段落属性 ( 居中, 居左等) , 用PAP ( Paragraph Proper-ties) 描述, 每个段落有一个PAP , 大小为610位。为减少空间占用, 和字符一样只记录和默认Default PAP的差异。
( 2) Table数据流
Table流主要存储信息流结构, 在Word文档中也一定存在。每个结构的起始位置和大小都记录在FIB中。具体到每个确定的Word文档中Table数据流是采用0 Table还是1 Table由FIB的base. f Which Tbl Stm标志位确定。
( 3) Data数据流
Data数据流没有预定义结构, 其中数据引用FIB或文档其它部分。Word文档的嵌入式对象 ( OLE, 如图片) 就存放在Data数据流中。OLE对象的读取从Word Document数据流中记录文字的部分开始, 如当Word文档中有图片时, Word Document数据流中记录文字资料的字节用ASCII 01表示, 该字节对应的Runof Text的CHP信息结构中f Spec标志位值为1; 其CHP信息结构中的fc Pic标志位值为图片在Data数据流中的开始位置。图片资料数据头称为PICF结构, 占用68字节, 记录有关图片的信息 ( 原始大小、缩放情况等) 。PICF之后是图片文件名称数据区块, 接着是原始图片的全部信息, 参见表2所示。
( 4) Document Summary Informaton数据流和Summary Informa-tion数据流
这两个流主要记录摘要信息, 格式一样, 只是属性编号 ( Property ID) 不同。
1. 2 物理结构分析
Word文件中各个数据流均由多个大小为512字节的页数据块FKP ( Formatted dis K Page, 也称为扇区sectors) 组成, 参见表3所示。
每个Word文档文件开始 ( 偏移地址0) 处是一个大小为512 Bytes的文件头 ( Header) , 然后是按照顺序排列的各种类型的扇区。数据块位置从512 Bytes开始计算起。
( 1) 文件头
文件头主要结构如表4所示。
( 2) 块配置表
Word文档内部控制数据流由块配置表BAT完成。BAT包含所有数据块的Block ID链 ( Chain) 。BAT表中的当前位置表示当前的块, 而该位置存放的块ID值 ( Value) 指向下一个块的ID。BAT可能在任意位置包含当前Word文档未使用的FreeBlock ID ( 0x FFFFFFFF) 。
如果某位置为0x FFFFFFFE, 则表示一 个数据流 的结束 ( End Of Chain Block ID) ; 如果Block用于存放BAT表自身则为BAT Block ID ( 0x FFFFFFD) , 在DIF ( Double-indirect Fat) 中描述 ( DIF专用块 ( 0x FFFFFFC) 里最后4字节给出下一个DIF专用的Block ID, 如果Word文件尺寸小于7M的话没有独立的DIF块区) 。
( 3) 目录
目录 ( 属于内部控制数据流) 由一系列目录入口组成。每一个目录入口代表了文档中的仓库或数据流。仓库下的所有成员 ( 子仓库、数据流) 符合红 ( 用0表示) 黑 ( 用1表示) 树规则。
目录同样使用标准大小块区。目录项大小为128字节, 结构 ( 关键部分) 如表5所示。
2 数据隐藏流程
数据隐藏前根据被隐藏信息的重要性可以首先把需要加密传送的信息用哈夫曼编码或其它密码学技术做预处理, 然后从两种思路入手, 一是利用文档中原有的未使用的空间, 二是适度在文档中创造新空间, 具体执行时可以随机选择。
2. 1 利用载体文档中未使用空间
载体Word文档中未使用空间的定位方法如下:
( 1) 通过文件头信息 ( 参见表4所示) , ( 从偏移地址0x4C开始入手) 找到BAT表使用的扇区链。
( 2) 读取块分配表 ( BAT) 信息
( 3) 找出表项值为 - 1 ( 0x FFFFFFFF) 的项, 该项对应的块即为未使用块, 计算出在文件中的偏移地址。
( 4) 将需要隐藏的信息放在 ( 3) 找到的位置。
被隐藏信息需要取出时可按上述步骤 ( 1) - 步骤 ( 4) 通过文件头信息 找到BAT开始扇区, 找出所有 表项值为 - 1 ( 0x FFFFFFFF) 的项对应的内部扇区块, 记录这些数据块的内容后解码即可。
2. 2 适度在载体文档中扩充空间
存放在载体Word文档中嵌入式对象Data Stream数据流的开始部分是PIC数据结构, 后边开始才是真正嵌入的对象。实验表明, 更改嵌入式对象 ( 文档内部存储) 的名称用户打开后不会感觉到。此外, 由于实际使用中对象名称占用的空间并不大, 因此通过人为增大名称占用空间的相关参数就可容纳更多需要隐藏的信息, 换句话说用需要隐藏的信息替换原始默认名称就可以实现数据隐藏。步骤如下:
( 1) 找一个有多个嵌入式对象的原始Word文档作载体, 选择一个对象着手 ( 最后一个为好) 。从Word Document数据流格式信息中取出此Run of Text对应的Character Properties ( CHP) 数据结构, 找到此对象在Data Stream中的偏移数值。
( 2) 通过目录项结构读出目录中Data数据流目录项 ( 参见表5) 偏移0x74处的入口数据和偏移0x78处数据大小两参数, 得到Data数据流第一个数据块的ID值和尺寸大小。参照块配置表算出Data数据流中最后一个块中的剩余空间。如剩余空间不足以存放被隐藏数据, 可修改Data流目录项中偏移0x78处数值及相关块配置表 ( BAT) 。
( 3) 找到 ( 最后) 那个准备用于隐藏数据的嵌入式对象的起始偏移地址。由PICF找到该对象名称大小和存储对象名称的位置, 根据需要隐藏内容做相应修改。如果需要增加空间, 则将原始内容后移并修改PICF中相应参数。
此外还可以在Data Stream的Hyperlink数据结构中隐藏。
3 验证与分析
测试环境: CPU: Inte I ( R) Core ( TM) i3-2350 CPU@ 2. 3 GHz, 内存: 4 GB; 硬盘: ST9500420AS; 操作系统: Windows 7 SP1; Word版本: Microsoft Word 2010。
3. 1 利用载体文档中未使用空间
这种思路以FIB和Table数据流剩余空间利用为例。
示例载体文档FIB现有未使用空间, 参见表6所示。
读取FIB的方法如下 ( 参见表1所示, 字节顺序: 小端, 下同) :
( 1) 在Word文档流的偏移0处读取文件信息块 ( FIB) :
( 2) 读取Fib Base, 32字节 ( 表6中偏移地址0x0200至0x021F) 。
( 3) 读取Fib. csw, 2字节 ( 表6中偏移地址0x220, 0x221处, 值为0x000E) 。
( 4) 读取Fib. csw×2字节 ( 0x000E×2 = 28) , 获得Fi-bRg W97。
( 5) 读取Fib. cslw, 2字节 ( 表6中偏移地址0x23E, 0x23F处, 值为0x0016) 。
( 6) 读取Fib. cslw×4字节 ( 0x0016×4 = 88) , 获得Fi-bRg Lw97。
( 7) 读取Fib. cbRgF c Lcb, 2字节 ( 表6中偏移地址0x0298, 0x0299处, 值为0x00B7) 。
( 8) 读取Fib. cbRg Fc Lcb×8字节 ( 0x00B7×8 = 1464) , 获得FibRg Fc Lcb。
( 9) 读取Fib. csw New, 2字节 ( 表6中偏移地址0x0852, 0x0853处, 值为0x0005) 。
( 10) 读取Fib. csw New×2字节 ( 0x0005×2 = 10) , 获得Fi-bRg Csw New。
通过以上步骤 ( 1) - 步骤 ( 10) 得到本示例载体Word文档的完整FIB的大小是32 + 2 + 28 + 2 + 88 + 2 + 1464 + 2 + 10 =1630字节, 由于文档内容按512字节的数据块分配使用, 故占用空间是2048字节, 即从偏移地址0x085E至0x09FF共418字节的磁盘空间实际上载体文档的内容并未真正使用, 将被隐藏数据加密后存放于此。
可以验证, 隐藏数据后的载体Word文档可以被MicrosoftWord程序正常识别。
使用FIB中未真正使用空间隐藏信息的特点是使用简单, 文档一旦被再次编辑过的话, 隐藏的内容会立刻被覆盖, 保证了被隐藏数据的安全性。如果不想出现这种情况的话, 可以利用Table数据流的中未使用空间的利用。
0 /1Table流中存储有很多信息流结构, 其中在许多结构中有未完全使用的空间, 以样式表结构为例, 参见表7所示。
定位步骤如下:
( 1) 读出FIB中的Fib. cbRg Fc Lcb, 在第9字节处开始的连续4字节 ( fc Stshf) 代表样式表数据结构在0 /1Table Stream的位置偏移。
( 2) 读出目录中的0 /1Table流目录项偏移0x74处的入口数据, 得到0 /1Table Stream数据流第一个数据块的ID值。
( 3) 根据以上结果, 由fc Stshf + ( First SID + 1) ×512 + ( 已经使用部分) 找到需要隐藏数据的存储空间, 把信息写入到样式表数据结构中。
3. 2 适度在载体文档中扩充空间
这里以利用WORD对内嵌图像的管理方式为例进行。
Data数据流开始为一个68字节的PICF资料结构, 紧接在后面的是一个包含图片文件名的区块空间, 随后才是原始图像文件, 此处利用这一区块来隐藏信息, 参见表8所示。
表8中, 偏移0x1200至0x1243是PICF头, 原始图像从偏移0x12D8开始。
偏移0x126C开始的4个字节表示内嵌图像文件名的大小, 此处为0x0000000A, 单位: 字节。从偏移0x127C开始是具体的文件名, 大小等于上述描述。这里从增加文件名尺寸入手, 将待隐藏信息在文件名处插入。
以增加100字节 ( 换算为16进制为0x64) 为例。
( 1) 将偏移0x126C开始处4个字节的“0x0000000A”现值改为加上“0x64”后的“0x0000006E”;
( 2) 将偏移0x1200处开始处4个字节的lcb ( 参见表2) 的“0x0000F113”现值改为加上“0x64”后的“0x0000F177”;
( 3) 将偏移0x1248处开始处4个字节的“0x00000046”现值改为加上“0x64”后的“0x0000AAAA”;
( 4) 将目录表中 ( 参见表5) “Data”项的偏移0x78处4个字节“0x0000F113”现值改为加上“0x64”后的“0x0000F177”;
( 5) 从偏移0x127C开始插入100字节待隐藏数据 ( “X”为例, 16进制为“0x58”) 。
修改后的内容如表9所示。
藏入被隐藏信息后的Word文档文件使用者打开后看不出有什么改变, 再次编辑后所藏的资料也不会消失。
使用FAT和NTFS两种分区方式, 均通过验证。
实验表明:
( 1) 选择大小为1 MB左右且其中包括多个图片或超级链接的Word文档作载体文档一般不会被用户怀疑。
( 2) 本方案虽然没有限制被隐藏信息的大小, 但不要超过载体文件太多, 否则容易被怀疑。如果需要被隐藏的数据容量特别大, 可用位图、声音或视频使用传统密码学技术加密后再插入Word文档, 密码从本文方案中随机选择一种传送。
( 3) 和同类技术相比, 采用第二种思路其鲁棒性要好, 当载体文档被修改编辑时其隐藏内容可以保留下来。
( 4) 使用第一种方式即利用Word文档未使用空间存放加密信息时, 只要Word主程序版本不同, 使用文件菜单下另存为命令保存为“Word97-2003”格式生成的Word文档中可使用的空间也不同, 可根据所传送被隐藏信息确定使用不同结构进行。要注意的是这种方法操作简单但鲁棒性不好, 如果文件被重新编辑的话被隐藏的信息将有可能遭到破坏。
4 结 语
基于Word文档为载体的数据隐藏方法与基于密码学技术的方法相比不容易引起人们注意, 和单纯基于图像、视频的信息隐藏方法相比更方便, 对网络传输的带宽要求很低, 具有较高的安全性和实用价值。
【WORD数据交互】推荐阅读:
医疗数据交互06-07
数据交互平台08-26
Word文档丢失的预防与丢失后数据的恢复09-06
游戏交互VS交互游戏10-31
Word表格的数据列按小数点对齐数字06-05
谈交互设计需注意的规范与创新交互设计09-24
主体交互07-15
交互实现10-15
交互关系10-21
交互功能06-06