1、在线预览Word文件

(1) 运行环境

① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox)

② IE工具栏-Internet 选项:将www.ntko.com加入到浏览器的可信站点中,不启用保护模式,并将HTTPS验证取消

③ 如果是开发人员首次使用文档控件,需要将控件手动注册控件,获取控件的版本clisid以及版本信息Version(如果程序已经开发完则可以忽略此步骤)

(2) 创建一个加载控件的JS文件,用户只需修改控件版本号Version,classid,cab包路径,以及添加授权即可。具体可访问http://dev.ntko.com:8000/查看

① JS文件代码如下:(-1表示TRUE,0表示FALSE)

  1. ////----在线编辑word并保存
  2. document.write('<object id="TANGER_OCX" classid="clsid:A64E3073-2016-4baf-A89D-FFE1FAA10EC0"');
  3. document.write('codebase="NTKO/OfficeControl.cab#version=5,0,3,0" width="100%" height="100%"> ');
  4. document.write('<param name="Toolbars" value="-1"> '); // 工具栏
  5. document.write('<param name="Menubar" value="0"> '); //菜单栏
  6. document.write('<param name="CustomToolBar" value="-1"> ');
  7. document.write('<param name="Titlebar" value="-1"> '); //标题栏
  8. document.write('<param name="Caption" value="华测计量技术有限公司专用">');//标题内容
  9. document.write('<param name="IsUseControlAgent" value="-1"> '); //是否是控制请求数据,其他请他不允许
  10. document.write('<param name="IsNoCopy" value="0"> '); //0不允许复制
  11. document.write('<param name="IsDirectConnect" value="-1"> ');
  12. document.write('<param name="DefaultOpenDocType" value="1"> ');//1表示只能打开word文档
  13. document.write('<param name="FileOpen" value="0"> ');
  14. document.write('<param name="FileNew" value="0"> ');
  15. document.write('<param name="FileSave" value="0"> ');
  16. document.write('<param name="FileSaveAs" value="0"> ');
  17. document.write('<param name="FilePrint" value="0"> ');
  18. document.write('<param name="FilePrintPreview" value="0"> ');
  19. document.write('<param name="ProductCaption" value="Office Anywhere 3.0"> ');
  20. document.write('<param name="ProductKey" value="65F867689D7FF5CD02FBE4AA23764306F715A9E2">');
  21. document.write('<SPAN STYLE="color:red">不能装载NTKO OFFICE文档控件。请在检查浏览器的选项中检查浏览器的安全设置。</SPAN> ');
  22. document.write('</object> ');

① View代码如下:

  1. @{
  2. ViewBag.Title = "Word";
  3. }
  4. <h2>Index</h2>
  5. <html>
  6. <head>
  7. <title>NTKO Office文档控件预览Word修改保存回服务器演示示例</title>
  8. <meta http-equiv="content-type" content="text/html; charset=gb2312">
  9. </head>
  10. <body bgcolor="#ffffff" ;>
  11. <p>
  12. <span>针对Word书签的操作</span>
  13. <button onclick="AddPicToWord()">添加图片</button>
  14. <button onclick="ReplacePicToWord()">替换图片</button>
  15. <button onclick="AddTextToWord()">插入文字</button>
  16. <button onclick="ReplaceTextToWord()">替换指定的文字</button>
  17. <input type="submit" value="保存文档" id="_upload">
  18. </p>
  19. <script src="~/Scripts/ntkoGenObj.js"></script>
  20. </body>
  21. </html>
  22. <script src="~/Scripts/jquery-1.10.2.min.js"></script>
  23. <script language="javascript">
  24. //ntko控件初始化完成后才进行文档的加载
  25. $(function () {
  26. inIt();
  27. });
  28. function inIt() {
  29. if (TANGER_OCX == null) {
  30. alert("NTKO OFFICE文档控件未能正确装载。请在本页面装载时窗口上方出现的提示条上点击装载ActiveX控件,并在随后出现的安装ActiveX的对话框中选择‘是’。");
  31. return;
  32. }
  33. OpenFile();
  34. }
  35. //以文件流的形式加载文件
  36. function OpenFile() {
  37. TANGER_OCX.BeginOpenFromURL('@Url.Action("ReturnFileStream", "WordView")', true);
  38. }
  39. //保存修改后的文件回服务器
  40. $("#_upload").click(function () {
  41. var list = TANGER_OCX.ActiveDocument.BookMarks;//书签列表
  42. alert("书签数:" + list.Count);
  43. TANGER_OCX.SaveToURL('@Url.Action("uploadFile", "WordView")', "TANGER_OCX", "", "", "", true);
  44. });
  45. var bookmarkname = "审核人";
  46. var bookmarkname2 = "批准人";
  47. //添加图片
  48. function AddPicToWord() {
  49. //书签列表
  50. var list = TANGER_OCX.ActiveDocument.BookMarks;
  51. alert("书签数为:" + list.Count);
  52. //判断书签是否存在
  53. if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname) && TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname2)) {
  54. alert("书签存在,开始插入审核人签名");
  55. TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname);//跳转指定书签位置
  56. TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/william.jpg")", true, 0, 0, 1, 100, 1);//添加图片,true是以浮动图片插入,false就相当于嵌入在光标处了 ---插入正确
  57. //AddIdtoPicture(bookmarkname);//为图片添加唯一标识(暂时用不到)
  58. alert("书签存在,开始插入批准人签名");
  59. TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname2);//跳转指定书签位置
  60. TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1);//添加图片,true是以浮动图片插入,false就相当于嵌入在光标处了 ---插入正确
  61. alert("图片添加成功");
  62. }
  63. }
  64.  
  65. //为图片列表中图片添加唯一标识(图片的AlternativeText属性可以设置为书签的名字name)
  66. function AddIdtoPicture(name) {
  67. alert("开始添加唯一标识" + name);
  68. var shapes = TANGER_OCX.ActiveDocument.Shapes;
  69. for (var i = 1; i <= shapes.Count; i++) {
  70. if (shapes(i).Type == 13) {
  71. if (shapes(i).AlternativeText == "") {
  72. alert(name);
  73. shapes(i).AlternativeText = name;
  74. }
  75. }
  76. }
  77. }
  78.  
  79. //判断书签是否存在,然后删除图片,替换图片
  80. function ReplacePicToWord() {
  81. var list = TANGER_OCX.ActiveDocument.BookMarks;
  82. alert("书签数为:" + list.Count);
  83. for (var i = 1; i <= list.Count; i++) {
  84. var markname = TANGER_OCX.ActiveDocument.BookMarks(i).Name;
  85. alert(markname);
  86. }
  87. if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookmarkname)) {
  88. alert("书签存在,开始替换审核人签名");
  89. var shapes = TANGER_OCX.ActiveDocument.Shapes;
  90. alert("图片数量" + shapes.Count);
  91. for (var i = 1; i <= shapes.Count; i++) {
  92. alert(shapes(i).Type + shapes(i).AlternativeText);
  93. //根据图片的类型以及AlternativeText属性(书签的名字来确定图片)
  94. if (shapes(i).Type == 13 && shapes(i).AlternativeText == "william") {
  95. shapes(i).Delete();
  96. alert("删除成功");
  97. }
  98. }
  99. TANGER_OCX.ActiveDocument.Application.Selection.GoTo(-1, 0, 0, bookmarkname);//跳转指定书签位置
  100. TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1);//添加图片,true是以浮动图片插入,false就相当于嵌入在光标处了 ---插入正确
  101. } else {
  102. alert("书签不存在,请添加");
  103. }
  104. }
  105. </script>
  106.  
  107. <script>
  108. var bookName = "审核时间";
  109. //在书签位置设置书签值
  110. function AddTextToWord() {
  111. if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookName)) {
  112. //判断书签是否存在
  113. TANGER_OCX.SetBookmarkValue(bookName, "2018/03/13");
  114. //添加书签值
  115. TANGER_OCX.ActiveDocument.Bookmarks(bookName).Range.Select();//选中书签的内容
  116. //设置为上标
  117. TANGER_OCX.ActiveDocument.Application.Selection.Font.SuperScript = 9999998;
  118. TANGER_OCX.ActiveDocument.Application.Selection.Font.Italic = true;//设置成斜体
  119. TANGER_OCX.ActiveDocument.Application.Selection.Font.Bold = true;//加粗
  120. TANGER_OCX.ActiveDocument.Application.Selection.Font.StrikeThrough = true;//带有删除线
  121. TANGER_OCX.ActiveDocument.Application.Selection.Font.Underline = true;//带有下划线
  122. TANGER_OCX.ActiveDocument.Application.Selection.Font.NameFarEast = "宋体";//字体
  123. TANGER_OCX.ActiveDocument.Application.Selection.Font.Size = 18;//大小
  124. TANGER_OCX.ActiveDocument.Application.Selection.Font.Color = 255;//颜色
  125.  
  126. //设置为下标
  127. //TANGER_OCX.ActiveDocument.Application.Selection.Font.Subscript = 9999998;
  128. }
  129. }
  130. //判断书签是否存在,然后替换书签值(替换文本)
  131. function ReplaceTextToWord() {
  132. if (TANGER_OCX.ActiveDocument.BookMarks.Exists(bookName)) {
  133. TANGER_OCX.SetBookmarkValue(bookName, "YYYYYYYYYYYY");
  134. }
  135. }
  136. //替换文当中所有内容和Text值相等的值(暂时用不着)
  137. function Searchs() {
  138. var sel = null;
  139. sel = TANGER_OCX.ActiveDocument.Application.Selection;
  140. var result = true;
  141. sel.Find.ClearFormatting();
  142. sel.Find.Text = "王永乐";
  143. sel.Find.Forward = true;
  144. sel.Find.Wrap = 1;
  145. do {
  146. result = sel.Find.Execute();
  147. if (result) {
  148. sel.Font.Color = 255;
  149. sel.Font.Name = "Arial";
  150. sel.Font.Size = 24;
  151. }
  152. }
  153. while (result);
  154. }
  155. </script>

① Controller代码如下:

  1. /// <summary>
  2. /// 打开文件(流的形式返回)
  3. /// </summary>
  4. /// <returns></returns>
  5. public ActionResult ReturnFileStream()
  6. {
  7. var bytes = Properties.Resources.word;
  8. var fileStream = new MemoryStream(bytes);
  9. return new FileStreamResult(fileStream,"application/xhtml+xml");
  10. }
  11.  
  12. /// <summary>
  13. /// 保存文件
  14. /// </summary>
  15. /// <returns></returns>
  16. [HttpPost]
  17. public ActionResult uploadFile()
  18. {
  19. var files = Request.Files[];
  20. var path = Server.MapPath($"~/{DateTime.Now.ToLongDateString()}.doc");
  21. FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
  22. byte[] bytes = new byte[files.InputStream.Length];
  23. files.InputStream.Read(bytes, , bytes.Length);
  24. fs.Write(bytes, , bytes.Length);
  25. fs.Close();
  26. return View("Index");
  27. }

文档控件NTKO OFFICE 详细使用说明之预览word编辑保存回服务器的更多相关文章

  1. 文档控件NTKO OFFICE 详细使用说明之预览Excel文件(查看、编辑、保存回服务器)

    1.在线预览Excel文件 (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将www.ntko.com加入到浏 ...

  2. 文档控件NTKO OFFICE 详细使用说明之预览PDF文件(禁止打印、下载、另存为、防抓包下载)

    1.在线预览PDF文件(禁止打印.下载.复制.另存为) (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将ww ...

  3. NTKO OFFICE文档控件

    目录 前言 什么是ntko 准备工作 实战演练 总结 一.前言 Web开发中经常需要用到在线处理office文档的功能,现在市面上有一些常用的Web页面调用显示Office的控件技术,用起来很方便. ...

  4. PyQt5复杂控件(树控件、选项卡控件(滚动条控件、多文档控件、停靠控件)

    1.树控件的基本使用方法QTreeWidget'''QTreeWidget树控件的使用方法添加图标,添加表格,添加复选框等'''from PyQt5.QtWidgets import *from Py ...

  5. VSTO:C#获取文档控件的值

    基础知识准备: VSTO入门 创建Excel解决方案   string[] inputfileNames = { @"C:\1.xls", @"C:\2.xls" ...

  6. UploadFile控件,提交图片后,页面预览显示刚刚提交的图片

    最近在用asp.net来写一个新闻系统后台,然后由于不用用网上的flash插件来上传图片什么的,我就用asp.net的控件来写,但是控件总归有一些用的不够灵活的地方.这次测试提出,文章在修改的时候,需 ...

  7. C# MVC(File)控件多张图片上传加预览

    刚来公司实习,老板叫我写一个积分商城网站.用的是公司的框架结构搭建的后台,所以后台的图片上传不需要自己写.但是前台的评价图片就需要自己手写了,在网上找了很多代码发现都用不了.问了很多人也都没有实现! ...

  8. js获取file控件的完整路径(上传图片预览)

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 推荐一套.NET文档处理组件Spire.Office

    原文:推荐一套.NET文档处理组件Spire.Office 以前的项目中用到一点Word简单处理的功能(文字替换和转PDF格式),当时使用的是一套COM组件,必须在服务器上安装office环境.最近考 ...

随机推荐

  1. 模拟登录新浪微博(Python)

    PC 登录新浪微博时, 在客户端用js预先对用户名.密码都进行了加密, 而且在POST之前会GET 一组参数,这也将作为POST_DATA 的一部分. 这样, 就不能用通常的那种简单方法来模拟POST ...

  2. PAT_A1030#Travel Plan

    Source: PAT A1030 Travel Plan (30 分) Description: A traveler's map gives the distances between citie ...

  3. eas之添加表格列宽自动调整设置

    设置表格整体宽度自动调整为所在panel的宽度 KDTable table=new KDTable(); table. setAutoResize (boolean); 注意:该功能在冻结功能启用后, ...

  4. php第四节课

    对象 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  5. [Ynoi2014]不归之人与望眼欲穿的人们

    题目大意: 给定一个序列,每次单点修改一个数,或给定$x$,询问最短的or起来大于等于$x$的区间的长度(不存在输出-1). 解题思路: 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归 ...

  6. 使用GitHub代码仓库Repositories上传自己的项目代码

    1.下载客户端github(必须下载,需要该软件所提供的Git shell输入命令来上传项目)下载地址: https://github-windows.s3.amazonaws.com/GitHubS ...

  7. 48.Query DSL

    主要知识点 1.Query DSL的理解及基本语法 2.如何组合多个搜索条件 bool     一.Query DSL的理解 Query DSL的查询形式如下: GET /_search { &quo ...

  8. firebird的递归查询

    with RECURSIVE cte as ( select a.* from PM_PROJECT a where a.pm_id='root_id' union all select k.* fr ...

  9. 【ACM】hdu_1096_A+BVIII_201307261748

    A+B for Input-Output Practice (VIII)Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32 ...

  10. sublime text3环境与工具搭建

    1,ctrl+shift+P ,打开包安装窗口如下: 2,选择 install Package,安装详解插件 1-安装 JsFormat插件,用于格式化js的插件,使用快捷键 Ctrl+Alt+F对J ...