Web在线操作Office之Word

  最近公司有个项目,需要直接在IE浏览器中操作Word文档,随后在网上搜了一些资料,感觉都不是很理想。不过,最后还是找到了一个 功能比较强的控件,是老外开发的控件,需要注册。还好,没有注册时,只是在页面关闭时弹出一个对话框,如果某人能把它…掉,本人非常感激。好了,废话不多 说。先说说最近搜集的成果,不同级别的功能有不同级别的对应方案,要看大家需要了,这里我提三个方案。

  第1个方案、原汁原味

  Word,Excel或Vioso文档等Office,2003以后的版本,是都可以进行转换的,比如转换为Xml或Html,所以最简单的方案就是直接通过代码将Word文档转为Html格式,这样就可以在线浏览,只是在线浏览,是不能编辑的。

  其中,Excel文件如果转为Xml格式,是可以在线操作的,详细操作方式请参考我之前写的一篇贴子WebExcel文件展现。

  附件,还附加了一个用代码方式将Word文件转为Html格式的例子,仅供大家参考吧,偶也是从其他地方下下来的,经测试可以使用
  第2个方案、大树底下好乘凉

  说这句话,我们的第2个方案就是要用微软的东东,其实微软有好多好东东的,只是它喜欢偷偷摸摸的放出来,很少被人知道。或者说,他根本不打算推这个产品, 只能说:这个可以有。

  好了,我们要用到的就是微软的dsoframer控件,它是免费的,比第1个方案,功能稍强,这个控件没有详细研究,看了看别人的demo,感觉功能不强就没研究下去,附件中也有相关代码的,大家直接参考下好了。
  第3个方案、另辟蹊径

      既然微软这棵大树我们靠不住,就只能借助于第三方控件了,老外在这方向做得很牛X,方方面面的控件或插件都有,只有想不到,没有找不到…唉,中国啊…

      这个控件是OfficeOCXSetup插件,当前版本是7。4。0。236,附件有此安装程序,安装完以后有各编程工具的示例,安装程序提供的示例只提供了简单的打开,关闭,保存等操作。

      看提供的Demo里,好像可以对Word,Excel,PPT,Vioso等Office文件操作,确实很强大哈!

      下面我说一个比较复杂的业务场景:客户的某个单据需要录入,但单据里面的标签等其他帮助性文字是不允许客户修改的,客户所允许修改的地方我们要预留出来。 也就是说,Word本身提供的文档,也相当于ASPX页面,只留一些控件允许客户编辑就行了。

  同时,Word本身还提供一些简单的控件,比如日期,下拉菜单等。如果对下拉菜单取值,赋值等。好了,制作流程如下所示

  环境要求

  a) Word2007,最好是2007版本,因为控件有所新增

  b) 可维护xsd文件的工具(推荐使用VS2005或VS2008)

  名词解释

  a) 书签

  Word文档里的书签,我也不太好讲,可以理解为在文档中预留一个标识符,找数据的时候可以按此标识符查找即可

  b) 结点

  Word本身支持导入XSD架构文档,结点功能与书签功能类似,可理解为书签,只是功能更强大

  结点操作步骤

  a) 制作Word模板文件,如图-1所示:

b49d8782e8279be56d811978.jpg图-1

  b) 开发员收到Word文档后,需要制作xsd文档(相当于定义XML文件结构的,如图-2和图-3所示:

1e9ba73e8e4a64a0838b1378.jpg图-2

d600b64baf6c24aa83025c78.jpg图-3

  说明:

  i. xsd提供可视化和编码维护两种方式,个人建议使用编码方式维护。

  ii. <xs:element name=”死亡报卡”>结点为报卡名称。

  iii. <xs:element name=”xingming”>为某个结点,相当于DbTable中的某个DbColumnName名称。

  iv. <xs:attribute name=”dbtablename”为结点的自定义属性,是由我们自行增加的,目前的属性定义如:

dbtablename

结点所属Db表名称

dbcolumnname

结点所属Db表中列名称

dbcolumndatatype

列数据类型,如int,varchar等

dbcolumnedittype

列编辑类型,如textbox,dropdownlist

dbcolumnvalue

列栏值,若编辑类型是下拉菜单,则数据值写入此属性

helpsign

公用帮助标识,如民族,疾病等

comments

列中文含义,可用于必输项检测,弹出提示内容

  v. 只需复制结点,修改其自定义属性值即可。

  c) 完成xsd文档的编写,我们就需要将xsd文档并入Word中,因为我们使用结点方式操作数据。

  i. 打开Word文档,选择”开发工具”页面。

  ii. 单击”架构”菜单,出现”模板和加载项”对话框,如图-4所示:

d65068f0027d0df5a50f5278.jpg图-4

  iii. 再单击”添加架构”,将我们刚才定义好的xsd文件引入其中,并为其定义一个别名,如图-5所示:

854141af26701ca1faed5078.jpg图-5

  iv. 上述操作完成后,再点击如图-4所示”结构”菜单,结果会出现如图-6所示界面。注意:”仅列出当前元素的子元素”不要勾选。

a34c50fb7f92fc3e024f5678.jpg图-6

  v. 在如图-6所示的界面中,子项中有”死亡报卡”一项,它是我们所有<xs:element>项目的父级结点,需要将其引入其中,注意引入时必须选择”应用于整篇文档”,如图-7所示:

85c8bd1eebacaa4540341778.jpg图-7

  vi. 接下来的事情,我们就可以选择子项到单元格了,只需单击即可,操作效果如图-8所示:

af90e61f044bc050314e1578.jpg图-8

  vii. 选择我们刚才新增的结点,右键,属性,弹出如图-8所示的界面,这个界面用于将我们自定义的属性加入到结点中,即增加至”分配的属性”项中。这样我们就可以通过代码方式取值和赋值自定义属性了,增加后的效果如图-9所示:

46778c0a7731724594ca6b78.jpg图-9

  viii. 通过上述步骤,我们完成了报卡的设置工作,到此我们就可以通过编码方式对文档操作,包括结点取值和赋值,结点自定义属性取值和赋值。不过,如果直接拿给客户使用,会造成某些文字误删,因此,还需要对文档进行保护处理,同时,设置好只允许客户编辑的区域。

  d) 对文档进行保护,只允许录入,详细操作步骤如下。

  i. 切换到”开发工具”页面,单击”保护文档”,出现如图-10所示界面:

fcaeb06485302faaf6365478.jpg图-10

  ii. 选中某个我们刚才编辑好的模板,将右侧”仅允许在文档中进行此类编辑”勾选,再勾选”每个人”复选框即可。

  iii. 其余结点均按此操作步骤即可,设置完以后,选择”是,启动强制保护”即可(没有设置密码)。这样操作以后,交付给客户使用时,客户就不会误删数据了,因为所有数据都被保护起来了,留下来的都是允许客户编辑的。

  iv. 保护起来后,效果如图-11所示,可以停止保扩,注意:不要勾选”突出显示可编辑的区域”复选框,它的作用是显示/隐藏保护区域。

370d3e1fdcb58692a6866978.jpg图-11

  e) 最后,我们需要美化一下,如图-12所示:

  不要勾选”在文档中显示XML标记”复选框,它的作用是显示/隐藏结点项。

9289cac8ecf99e4d7e3e6f78.jpg图-12

  设置书签步骤

  a) 以设置页眉为例

  i. 在页眉中,录入”医院名称”文字,然后按几个空格,再选中刚才的空格,切换到”插入”页面,选择书签,弹出如图-13所示页面,录入一个书签名称,添加至列表框中即可。

a0c5d21732413053c83d6d78.jpg图-13

  ii. 设置完以后,如图-14所示,这是我们设置好以后的书签,是否保护可以通过设置结点保护方式即可。

787d7c09864227953ac76378.jpg图-14

  控件安装程序说明

  a) 安装完此控件后,找到安装路径,如图-15所示。

  i. Officeviewer.cab文件就是我们asp.net程序所要加载的cab控件包。

  ii. Samples文件夹,是各编程工具的示例,可直接运行,里面有asp.net示例,我们以此为例:

ce7e6bcf6ab8c867f9dc6178.jpg图-15

  b) 打开asp.net页面,cab加载方式也按它的加载方式即可。

  i. 我们在使用时,直接照搬过来即可,例:打开Word文档,事件注册方式等。

  ii. 这里重点说明我们以后会频繁操作的事件,就是双击事件,因为我们需要双击事件弹出公用帮助,提供快速录入功能,如图-16所示:

040c63f07f49f8997831aa79.jpg图-16

  c) 代码说明

  i. 声明页面变量array_xmlnodenameist和array_bookmarknamelist两个变量,用于存储Word文档中结点名称列表和 书签名称列表,目的是提高性能,不必每次再循环获取。上述变量可在OA1_DocumentOpened事件中赋值。

  ii. 控件与Db表数据取值和赋值方式如图-17和图-18所示。

  iii. Js方法可参考edrawoffice.js文件,已对一些功能有所封装。

f075b4c3f34e5d0fb219a879.jpg图-17

bde2d61125f4104ab8127b78.jpg图-18

  Word控件使用

  a) 使用Word2007中自带的控件,实现数据的简单定义后,数据的取值和赋值操作,如日期,性别下拉菜单等,如图-22所示:

b45af0c4393a14f38326ac79.jpg图-22

  b) 数据赋值时,是下拉菜单操作,需要将显示值显示在页面控件,数据值存储在结点的自定义属性中,此功能已实现,代码在edrawoffice.js中。

  备注

  1. 本要提供对此控件的技术支持,有问题可以与我联系,同时我提供的类库中若在问题,也请与我联系。

  2. 此控件的评估版本,页面关闭时会弹出对话框,如图-23所示,若有高手可以解决,本人不胜感谢。

b00658a9125998a61f17a279.jpg图-23

  代码及安装程序:Web在线操作Office文件.File

转载于:https://www.cnblogs.com/n666/archive/2011/08/10/2190792.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓逆向_17 --- IDA 动态调试【 环境搭建、so库调试【动态普通、动态debug模式】、JNI_OnLoad调试分析、java_ 开头函数分析】

哔哩哔哩视频&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p54 IDA Pro调试so&#xff0c;附加完毕&#xff0c;跳到目标so基址&#xff0c;但是内容都是DCB伪指令&#xff1f;&#xff1a;https://bbs.pediy.com/thread-222646.htm Android 中 adb shell ps 查…

2018全球科技创新报告

来源&#xff1a;199IT互联网数据中心摘要&#xff1a;毕马威报告显示&#xff0c;我们如今正处在一个科技创新爆发的时代&#xff0c;对于科技企业来说&#xff0c;现在不是害怕失败或是裹足不前的时候。毕马威报告显示&#xff0c;我们如今正处在一个科技创新爆发的时代&…

安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

Java 代码混淆介绍&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p60 Android 反编译利器 jadx&#xff1a;GitHub上直接下载&#xff1a;https://github.com/skylot/jadx Jeb 软件是一款专业实用且为安全专业人士设计的 Android 应用程序的反编绎工具&#xff0…

谷歌的「未来城市」

来源&#xff1a;爱范儿摘要&#xff1a;自 2015 年以来&#xff0c;谷歌一直在进行一个神秘的项目。自 2015 年以来&#xff0c;谷歌一直在进行一个神秘的项目。它就是由谷歌主导的「高科技未来城市项目」。那这个高科技未来城市是个什么样的城市&#xff0c;让玩物君来告诉你…

安卓逆向_19( 一 ) --- APK保护策略【APP打开就崩溃 之 霸哥apk过签名校验】

From&#xff1a;霸哥磁力搜索apk 过签名校验&#xff1a;https://www.cnblogs.com/LuLuLuHao/p/12863978.html 霸哥磁力搜索app回编签名&#xff1a;https://www.ssfiction.com/archives/2293 https://www.cnblogs.com/LuLuLuHao 哔哩哔哩&#xff08; IDA 分析 so &…

OpenAI NLP最新进展:通过无监督学习提升语言理解

编译 | reason_W编辑 | 明 明出品 | AI科技大本营摘要&#xff1a;近日&#xff0c;OpenAI 在其官方博客发文介绍了他们最新的自然语言处理&#xff08;NLP&#xff09;系统。这个系统是可扩展的、与任务无关的&#xff0c;并且在一系列不同的 NLP 任务中都取得了亮眼的成绩。但…

安卓逆向_19( 二 ) --- APK保护策略【重新签名后安装打开失败 --- 书旗小说.apk、浦发银行.apk的过签名校验【so 文件修改保存】】

From&#xff08; 书旗小说过签名校验 【 使用 DDMS 分析方法调用流程 】 &#xff09;&#xff1a;https://www.cnblogs.com/LuLuLuHao/p/12874468.html 签名校验一般步骤&#xff1a; 1. 先查有没有加壳&#xff0c;如果有壳&#xff0c;先脱壳2. 如果没加壳&#xff0c;则 …

GPU、FPGA芯片成为增强机器学习能力的“左膀右臂”

选自&#xff1a;forbes 编译&#xff1a;网易智能 参与&#xff1a;nariiy在商业软件中&#xff0c;电脑芯片已被遗忘。对于商业应用程序来说&#xff0c;这是一种商品。由于机器人技术与个人硬件设备联系更为紧密&#xff0c;因而制造应用程序仍然更侧重于硬件部分。自20世纪…

增强现实技术的9个最新应用趋势

来源&#xff1a;资本实验室摘要&#xff1a;随着AR技术的成熟&#xff0c;AR与行业的融合越来越深入。从设计到营销&#xff0c;从教育到医疗&#xff0c;从出行到文化&#xff0c;AR正在重新定义各产业的思维方式和运行方式。1.教育AR应用程序正在以更具互动性的方式改变教学…

安卓系统内 的 安卓虚拟机

转载&#xff1a;虚拟大师&#xff0c;让你的系统再安装一个系统&#xff0c;实现Xposed自由&#xff0c;支持摄像头调用http://xposed.appkg.com/2971.html 虚拟大师 VMOS 虚拟大师简介 虚拟大师是 Android 系统上的 Vmvare&#xff0c;完整的且自带 Root 系统能够让你实现无限…

未来一年最有可能成为独角兽的29家美国初创公司

来源&#xff1a; 资本实验室摘要&#xff1a;近期&#xff0c;研究机构PitchBook梳理出了在未来一年最有可能成为独角兽的29家美国初创公司。资本实验室今日投资关注聚焦前沿科技创新与传统产业升级“小兄弟&#xff0c;老夫看你骨骼清奇&#xff0c;天赋异禀&#xff0c;定是…

StreamWriter类的一般使用方法

理解StreamWriter可以对照StreamReader类来进行&#xff0c;因为他们只是读写的方式不同&#xff0c;一个是读&#xff0c;一个是写&#xff0c;其他的差别不是特别大。 StreamWriter继承于抽象类TextWriter&#xff0c;是用来进行文本文件字符流写的类。 它是按照一种特定的编…

Firefox、Chrome 盘助手

From&#xff1a;https://www.runningcheese.com/baiduyun IDM 下载地址&#xff1a;http://www.ucbug.com/soft/26392.html 定制 Firefox、Chrome 下载地址&#xff1a;https://www.runningcheese.com/ 由网友 "哩呵" 制作的 网盘助手 脚本&#xff0c;需要通过拓…

复杂性理论:科学方法的第三个梯级

来源&#xff1a;人机与认知实验室摘要&#xff1a;莫兰认为系统论超越了还原论&#xff0c;复杂性理论又超越了系统论&#xff0c;它们代表着科学方法论依次达到的三个梯级。复杂性研究从20世纪末叶兴起&#xff0c;目前在国内外已成为许多学科领域内研究的前沿和热点。它涉及…

Notepad++ 简单使用

github 下载地址&#xff1a;https://github.com/notepad-plus-plus 简介 Notepad 是 Windows 下的一款免费开源代码编辑器&#xff0c;它使用较少的CPU功率&#xff0c;降低电脑系统能源消耗&#xff0c;但轻巧且执行效率高&#xff0c;使得 Notepad 可完美地取代微软视窗的记…

MIT:机器学习预测2018世界杯冠军

来源 &#xff1a;199IT互联网数据中心摘要&#xff1a;麻省理工学院报道&#xff0c;他们的研究人员开发了一种新型人工智能&#xff0c;用以预测世界杯走势。麻省理工学院报道&#xff0c;他们的研究人员开发了一种新型人工智能&#xff0c;用以预测世界杯走势。研究人员声称…

安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断

From&#xff08; 模拟器检测实战分析 &#xff09;&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p65 怎样过 app 的模拟器检测&#xff1a;https://bbs.pediy.com/thread-249759.htm Android 模拟器如何不被检测思路&#xff1a;https://bbs.pediy.com/thread…

2017-2018中国机器人创新Top100榜单深度分析

来源&#xff1a;产业创新创投数据平台Innov100摘要&#xff1a;人类和机器人由相互隔离、保持距离发展到充分的人机交互&#xff0c;融合共生。一、2017-2018年中国机器人创新Top100榜单二、中国机器人创新Top100数据分析&#xff08;一&#xff09;机器人创新Top100产业生态分…

揭秘:机器究竟是怎么学习的?

来源&#xff1a;雪球摘要&#xff1a;从算法的角度看&#xff0c;机器学习有很多种算法&#xff0c;例如回归算法、基于实例的算法、正则化算法、决策树算法、贝叶斯算法、聚合算法、关联规则学习算法和人工神经网络算法。从算法的角度看&#xff0c;机器学习有很多种算法&…

安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 )&#xff1a; 1. 在 AndroidMainfest.xml ---> application 标签下&#xff0c;设置或者添加属性 android:debuggable"true" 2. 系统默认模式&#xff0c;在 build.prop(boot.img)&#xff0c;…