1、在線預覽Excel文件
(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)
////----在線編輯Excel並保存 document.write('<object id="TANGER_OCX" classid="clsid:A64E3073-2016-4baf-A89D-FFE1FAA10EC0"'); document.write('codebase="NTKO/OfficeControl.cab#version=5,0,3,0" width="100%" height="100%"> '); document.write('<param name="Toolbars" value="-1"> '); // 工具欄 document.write('<param name="Menubar" value="0"> '); //菜單欄 document.write('<param name="CustomToolBar" value="-1"> '); document.write('<param name="Titlebar" value="-1"> '); //標題欄 document.write('<param name="Caption" value="華測計量技術有限公司專用">');//標題內容 document.write('<param name="IsUseControlAgent" value="-1"> '); //是否是控制請求數據,其他請他不允許 document.write('<param name="IsNoCopy" value="0"> '); //0不允許復制 document.write('<param name="IsDirectConnect" value="-1"> '); document.write('<param name="DefaultOpenDocType" value="1"> ');//1表示只能打開word文檔 document.write('<param name="FileOpen" value="0"> '); document.write('<param name="FileNew" value="0"> '); document.write('<param name="FileSave" value="0"> '); document.write('<param name="FileSaveAs" value="0"> '); document.write('<param name="FilePrint" value="0"> '); document.write('<param name="FilePrintPreview" value="0"> '); document.write('<param name="ProductCaption" value="Office Anywhere 3.0"> '); document.write('<param name="ProductKey" value="65F867689D7FF5CD02FBE4AA23764306F715A9E2">'); document.write('<SPAN STYLE="color:red">不能裝載NTKO OFFICE文檔控件。請在檢查瀏覽器的選項中檢查瀏覽器的安全設置。</SPAN> '); document.write('</object> ');
① View代碼如下:
@{ ViewBag.Title = "預覽excel"; } <h2>Index</h2> <html> <head> <title>NTKO Office文檔控件在線預覽Excel文件(修改、保存回服務器)演示示例</title> <meta http-equiv="content-type" content="text/html; charset=gb2312"> </head> <body bgcolor="#ffffff" ;> <p> <span>針對excel單元格的操作</span> <button onclick="AddPicToWord()">添加圖片</button> <button onclick="ReplacePicToWord()">替換圖片</button> <button onclick="AddTextToWord()">插入文字</button> <button onclick="ReplaceTextToWord()">替換指定的文字</button> <input type="submit" value="保存文檔" id="_upload"> </p> <script src="~/Scripts/ntkoGenObj.js"></script> </body> </html> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script language="javascript"> //控件初始化完成后再以流的形式加載文件 $(function () { inIt(); }); //初始化 function inIt() { if (TANGER_OCX == null) { alert("NTKO OFFICE文檔控件未能正確裝載。請在本頁面裝載時窗口上方出現的提示條上點擊裝載ActiveX控件,並在隨后出現的安裝ActiveX的對話框中選擇‘是’。"); return; } OpenFile(); } //以流的形式打開文件 function OpenFile() { TANGER_OCX.BeginOpenFromURL('@Url.Action("ReturnFileStream", "ExcelView")', true); } //在線編輯,保存修改后的文件回服務器 $("#_upload").click(function () { TANGER_OCX.SaveToURL('@Url.Action("uploadFile", "ExcelView")', "TANGER_OCX", "", "", "", true); }); //添加圖片 function AddPicToWord() { var localName = "W33";//單元格的名稱 TANGER_OCX.Activate(true);//激活excel var range=TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").Range(localName); TANGER_OCX.ActiveDocument.Application.Goto(range);//跳轉指定單元格 TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/william.jpg")", true, 0, 0, 1, 100, 1);//添加圖片 //TANGER_OCX.ActiveDocument.Application.ActiveCell.FormulaR1C1 = "恭喜你找到了我!";//設置內容 localName = "W36";//單元格的名稱 range = TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").Range(localName); TANGER_OCX.ActiveDocument.Application.Goto(range); TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1); } //找到對應的單元格刪除圖片,替換圖片 function ReplacePicToWord() { var localName = "W33"; TANGER_OCX.Activate(true); var range = TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").Range(localName); TANGER_OCX.ActiveDocument.Application.Goto(range); var shapes = TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").shapes; for (var i = 1; i <= shapes.Count; i++) { //alert(shapes(i).Type + shapes(i).AlternativeText); if (shapes(i).AlternativeText == "william") { shapes(i).Delete(); TANGER_OCX.AddPicFromURL("@Url.Content("~/NTKO/jimly.jpg")", true, 0, 0, 1, 100, 1); } } } //為單元格添加文字信息 function AddTextToWord() { var localName = "J55"; TANGER_OCX.Activate(true); var range=TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").Range(localName); TANGER_OCX.ActiveDocument.Application.Goto(range); TANGER_OCX.ActiveDocument.Application.ActiveCell.FormulaR1C1 = "恭喜你找到了我!";//設置內容 } //修改單元格的內容 function ReplaceTextToWord() { var localName = "J55"; TANGER_OCX.Activate(true); var range = TANGER_OCX.ActiveDocument.Application.Worksheets("Cover").Range(localName); TANGER_OCX.ActiveDocument.Application.Goto(range); TANGER_OCX.ActiveDocument.Application.ActiveCell.FormulaR1C1 = "哈哈,恭喜你you找到了我!";//設置內容 } </script>
Controller代碼如下:
/// <summary> /// 打開文件 /// </summary> /// <returns></returns> public ActionResult ReturnFileStream() { var bytes = Properties.Resources.excel; var fileStream = new MemoryStream(bytes); return new FileStreamResult(fileStream, "application/xhtml+xml"); } /// <summary> /// 保存文件 /// </summary> /// <returns></returns> [HttpPost] public ActionResult uploadFile() { var files = Request.Files[0]; var path = Server.MapPath($"~/{DateTime.Now.ToLongDateString()}.xls"); FileStream fs = new FileStream(path, FileMode.OpenOrCreate); byte[] bytes = new byte[files.InputStream.Length]; files.InputStream.Read(bytes, 0, bytes.Length); fs.Write(bytes, 0, bytes.Length); fs.Close(); return View("Index"); }