精华内容
下载资源
问答
  • PageOffice是市场上唯一一款能够同时支持IE、谷歌Chrome、火狐Firefox、搜狗、360等所有流行浏览器的在线Office组件/文档控件。磐石般的运行稳定性,复杂客户机环境下的广泛兼容性,客户
  • PageOffice是市场上唯一一款能够同时支持IE、谷歌Chrome、火狐Firefox、搜狗、360等所有流行浏览器的在线Office组件/文档控件。磐石般的运行稳定性,复杂客户机环境下的广泛兼容性,客户
  • 部署Office Web Apps资源包 一共三个文件 Microsoft Office Web Apps Server文件:wacserver.exe Office Web Apps补丁文件:wacserver2013-kb2810007...实现在线office预览编辑 资源包太大可以给我留言需要什么单独发你
  • 金山文档 多人实时协作的在线Office WPS Office Mac版 文档在Mac上顺滑呈现 常用文件格式完美兼容 深色模式、左右分屏、Handoff
  • php+openoffice+python实现在线office预览. 里面包含了最新openoffice4.1.4的安装与结合php实现office在线预览的一个解决方案
  • 文章目录1、永中 Office 实现在线 Office(1)永中 Office 介绍(2)项目需求对比(3)基本整合过程(4)调用逻辑图(5)实际使用案例 1、永中 Office 实现在线 Office (1)永中 Office 介绍 永中Office官网,相比...

    1、永中 Office 实现在线 Office

    (1)永中 Office 介绍

    永中Office官网,相比于PageOffice,个人觉得从使用方面来说,永中Office好用一点,永中Office对于开发者来说,有两个选择,一个是在线版webOffice功能较少(对于我这种需求对文档内容细节把控的来说,不考虑了),另一个是NP插件版,这个版本是和永中技术支持的小姐姐对接的,也是我推荐使用的版本

    从使用层面来说,永中NP插件只需要两个东西,一个是NP插件的js文件需要引入到项目中,其次是客户端需要安装永中Office软件,因为NP插件实际上是调用本地的永中Office软件,而且永中的授权模式是客户端软件授权,也就是说,每个客户端都需要安装,并且授权才能使用,这点和PageOffice不同,PageOffice是服务端授权

    永中NP插件只能使用在360浏览器,因为我的项目需要支持在Linux系统上使用

    在这里插入图片描述
    NP插件是在浏览器上新开一个tab,并显示内容,个人觉得最好用的方式

    (2)项目需求对比

    接下来继续分析项目需求,首先看这个插件能否满足,我的项目中使用的所有功能都能满足

    • 新建文件
    • 新建模板文件
    • 新建模板文件(带标签替换)
    • 编辑文件
    • 查询多个文章段落合并为一个文件(数据库多个段落存的是字符串)
    • 保存时设置其他参数值
    • 多个二进制文件合并未一个文件(多个文件合并)
    • 阅读文件(只读模式)
    • 下载文件
    • 通过代码构建整篇文章

    上面的出了最后一点难度大,其他的都是常规操作,通过代码构建整篇文章意思是用代码拼接出一篇800字作文,这样好理解,包括文字段落、换行、加粗、样式、首航缩进等,一篇标准的文件,我的项目实际上是生成1:1的政府红头文件,对文字的要求更是严格

    (3)基本整合过程

    前面说过,NP插件只有一个js文件

    在这里插入图片描述
    在网页头部增加js文件就可以了

    <%-- 永中office --%>
    <script type="text/javascript" src="<%=path%>/static/js/yozoOffice/yozoOffice.js"></script>
    

    (4)调用逻辑图

    (5)实际使用案例

    相比PageOffice,永中NP插件简洁的多,PageOffice的代码都是写在java的,永中NP的代码都是写在js中的

    下面以新建一个模板文件为例,然后保存到服务器,首先前端请求后台,新建文件

    前端发起请求

    var param = '?title=' + encodeURI(obj.field.title)
                        + '&issueNumber=' + obj.field.issueNumber
                        + '&userIds=' + userIds.join(',')
                        + '&inviteDate=' + encodeURI(obj.field.inviteDate)
                        + '&attachment=' + encodeURI(obj.field.attachment)
                        + '&attachmentName=' + encodeURI(obj.field.attachmentName)
                        + '&delayTimeLimit=' + encodeURI(obj.field.delayTimeLimit)
                        + '&missTimeLimit=' + encodeURI(obj.field.missTimeLimit)
                        + '&orgId=${sessionScope.userInfoSession.orgId}'
                        + '&createUser=${sessionScope.userInfoSession.id}';
                    window.open('<%=path%>/test/addInitStep.action' + param);
    

    后台一样的返回一个页面

        /**
         * 添加Word页面
         *
         * @param entity
         * @param model
         * @return
         */
        @GetMapping("addInitStep")
        public String addInitStep(InvitedPaperVo entity, Model model) {
    
            UserInfoSession ui = (UserInfoSession) SessionUtils.getSessionAttribute(SessionConst.PC_USER_SESSION);
            UserInfoVo userInfoVo = userInfoService.getUserInfoById(ui);
    
            Map<String, Object> map = new HashMap<>(16);
            map.put("inviteYear", entity.getInviteDate().substring(0, 5));
            map.put("inviteDate", DateUtils.dateClearZero(entity.getInviteDate()));
            map.put("issueNumber", String.valueOf(entity.getIssueNumber()));
            map.put("content", "");
            map.put("phone", userInfoVo.getOfficeTel() != null ? userInfoVo.getOfficeTel() : "");
            map.put("createUserName", userInfoVo.getName() != null ? userInfoVo.getName() : "");
            model.addAttribute("bookmarkJson", JSON.toJSON(map));
    
            return "admin/invited_paper_add_office";
        }
    

    编写返回的页面,用来承载插件显示的内容

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%String path = request.getContextPath();%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>新建模板文件</title>
        <%@ include file="./common/head.jsp" %>
    </head>
    <body>
    
    <div style="width: 230px; float: left; padding: 10px;">
        <button type="button" class="layui-btn layui-btn-blue" lay-submit lay-filter="submitBtn">保存文档</button>
    </div>
    <div style="width: calc(100% - 250px); float: left;">
        <div id="yozo"></div>
    </div>
    
    <%@ include file="./common/js.jsp" %>
    <script type="text/javascript">
        /** --------------------------------------- 初始化永中 start */
        // 初始化插件
        var Application;
        Application = init("yozo", "100%", $(window).height());
        Application.ActionEnabledWithYozoID(4, false);
        Application.openDocumentRemote(serverBaseUrl + "/office-templates/invited_paper.doc", false);
        // 处理标签替换
        var bookmarkJson = JSON.parse('${bookmarkJson}');
        var bookmarks = Application.ActiveDocument.Bookmarks;
        replaceBookmarks(bookmarkJson, bookmarks);
        /** --------------------------------------- 初始化永中 end */
    
        layui.config({
            base: '<%=path%>/static/layuiadmin/'
        }).extend({
            popup: 'modules/popup'
        }).use(['layer', 'form'], function () {
            var form = layui.form;
    
            // 提交数据
            form.on('submit(submitBtn)', function (obj) {
                layer.confirm('保存文档', {icon: 0, title: '提示'}, function () {
                    var param = '?' + getParamByJson(getQueryString());
                    if (Application.saveURL(serverBaseUrl + '/invitedPaper/save.action' + param)) {
                        alert('保存成功');
                        history.go(-1);
                        window.close();
                    } else {
                        alert('保存失败:请检查网络连接')
                    }
                });
                return false;
            });
        });
    </script>
    </body>
    </html>
    

    保存到服务器,这里使用了一个工具类,我是自己编写的工具类

        /**
         * 保存基本信息
         *
         * @param invitedPaperVo
         * @return
         */
        @RequestMapping("save")
        @ResponseBody
        public void save(InvitedPaperVo invitedPaperVo, HttpServletRequest request) {
            invitedPaperVo.setContent(YoZoUtils.getFileByte(request));
            invitedPaperService.saveInvitedPaper(invitedPaperVo);
        }
    

    YoZoUtils.getFileByte(request)工具类的内容是,从当前request中读取到文件,并转为二进制,我的服务器是保存的二进制文件

    import javax.servlet.http.HttpServletRequest;
    import java.io.*;
    
    /**
     * 永中插件 工具类
     *
     * @author Tellsea
     * @date 2020/09/22
     */
    public class YoZoUtils {
    
        /**
         * 将前端请求的文件,转为byte[]类型,兼容老插件PageOffice
         *
         * @param request
         * @return
         */
        public static byte[] getFileByte(HttpServletRequest request) {
            try {
                if (request.getContentLength() > 0) {
                    String localFileName = System.currentTimeMillis() + ".doc";
                    String realFileName = request.getSession().getServletContext().getRealPath("/office-templates/temp/") + localFileName;
                    InputStream in = request.getInputStream();
                    File file = new File(realFileName);
                    if (!file.getParentFile().exists()) {
                        try {
                            file.getParentFile().mkdirs();
                            file.createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    FileOutputStream o = new FileOutputStream(file);
                    byte b[] = new byte[1024];
                    int n;
                    while ((n = in.read(b)) != -1) {
                        o.write(b, 0, n);
                    }
                    o.close();
                    in.close();
                    byte[] bytes = fileConvertToByteArray(file);
                    deleteFile(realFileName);
                    return bytes;
                } else {
                    System.out.println("保存的文件不能为空");
                }
            } catch (IOException e) {
                System.out.println("处理文件错误");
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 把一个文件转化为byte字节数组。
         *
         * @return
         */
        public static byte[] fileConvertToByteArray(File file) {
            byte[] data = null;
            try {
                FileInputStream fis = new FileInputStream(file);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int len;
                byte[] buffer = new byte[1024];
                while ((len = fis.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                data = baos.toByteArray();
                fis.close();
                baos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return data;
        }
    
        /**
         * 删除单个文件
         *
         * @param fileName 要删除的文件的文件名
         * @return 单个文件删除成功返回true,否则返回false
         */
        public static boolean deleteFile(String fileName) {
            File file = new File(fileName);
            // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
            if (file.exists() && file.isFile()) {
                if (file.delete()) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
    
    
        /**
         * 强制删除
         *
         * @param fileName
         * @return
         */
        public static boolean forceDelete(String fileName) {
            File f = new File(fileName);
            boolean result = false;
            int tryCount = 0;
            while (!result && tryCount++ < 10) {
                System.gc();
                result = f.delete();
            }
            return result;
        }
    }
    

    上面是保存二进制的方法,建议保存文件到服务器,然后将访问路径保存到数据库,具体的可以和技术客服详细对接

    微信公众号

    每天Get一个小技巧

    展开全文
  • 文章目录1、PageOffice 实现在线 Office(1)PageOffice 介绍(2)项目需求对比(3)基本整合过程(4)调用逻辑图(5)实际使用案例 1、PageOffice 实现在线 Office (1)PageOffice 介绍 PageOffice官网,在官网中...

    1、PageOffice 实现在线 Office

    (1)PageOffice 介绍

    PageOffice官网,在官网中可以找到各种语言的版本、案例,通过对技术客服的对接,发现PageOffice有两个版本,一种是在浏览器打开一个新的tab,然后显示文档等(兼容性差,不考虑),另一个种是打开插件,在桌面弹出一个窗口,兼容性好一点,但是每次打开一个文档,都会新增加一个窗口,总是需要手动关闭,每个客户端都需要安装PageOffice插件

    这里有个小细节,PageOffice不支持国产化,如果项目需要支持国产化,建议使用永中Office

    在这里插入图片描述

    从上图可以看出,PageOffice是直接独立于浏览器之外的一个软件

    (2)项目需求对比

    接下来继续分析项目需求,首先看这个插件能否满足,我的项目中使用的所有功能都能满足

    • 新建文件
    • 新建模板文件
    • 新建模板文件(带标签替换)
    • 编辑文件
    • 查询多个文章段落合并为一个文件(数据库多个段落存的是字符串)
    • 保存时设置其他参数值
    • 多个二进制文件合并未一个文件(多个文件合并)
    • 阅读文件(只读模式)
    • 下载文件
    • 通过代码构建整篇文章

    上面的出了最后一点难度大,其他的都是常规操作,通过代码构建整篇文章意思是用代码拼接出一篇800字作文,这样好理解,包括文字段落、换行、加粗、样式、首航缩进等,一篇标准的文件,我的项目实际上是生成1:1的政府红头文件,对文字的要求更是严格

    (3)基本整合过程

    这里我就不详细写具体怎么整合的了,官方都会提供案例的,我当时用的是PageOffice V4.0官网示例,然后更具下载的包,将相关jar,依赖,配置文件添加好

    • pageoffice4.6.0.3.jar是本地jar,添加到lib下

    在这里插入图片描述

    • 修改web.xml 配置文件,具体的更具你自己的版本修改
        <!-- PageOffice Begin -->
        <servlet>
            <servlet-name>poserver</servlet-name>
            <servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/poserver.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/sealsetup.exe</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/posetup.exe</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/pageoffice.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/jquery.min.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>poserver</servlet-name>
            <url-pattern>/pobstyle.css</url-pattern>
        </servlet-mapping>
        <servlet>
            <servlet-name>adminseal</servlet-name>
            <servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/adminseal.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/loginseal.zz</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>adminseal</servlet-name>
            <url-pattern>/sealimage.zz</url-pattern>
        </servlet-mapping>
        <mime-mapping>
            <extension>mht</extension>
            <mime-type>message/rfc822</mime-type>
        </mime-mapping>
        <context-param>
            <param-name>adminseal-password</param-name>
            <param-value>111111</param-value>
        </context-param>
        <!-- PageOffice End -->
    
    • 引入相应的js文件
    <%-- OfficePage --%>
    <script type="text/javascript" src="<%=path%>/pageoffice.js" id="po_js_main"></script>
    

    (4)调用逻辑图

    在这里插入图片描述

    (5)实际使用案例

    客户端按照要求,下载客户端插件,然后关闭所有的浏览器,再进行安装,安装的版本需要对应服务器中的jar包版本,我的项目使用规模较大,很多的电脑安装插件都出问题了,反正解决的挺慢的

    下面以新建一个模板文件为例,然后保存到服务器,首先前端请求后台,新建文件

    var param = '?title=' + encodeURI(obj.field.title)
                        + '&issueNumber=' + obj.field.issueNumber
                        + '&userIds=' + userIds.join(',')
                        + '&inviteDate=' + encodeURI(obj.field.inviteDate)
                        + '&attachment=' + encodeURI(obj.field.attachment)
                        + '&attachmentName=' + encodeURI(obj.field.attachmentName)
                        + '&delayTimeLimit=' + encodeURI(obj.field.delayTimeLimit)
                        + '&missTimeLimit=' + encodeURI(obj.field.missTimeLimit);
    POBrowser.openWindow('<%=path%>/test/addInitStep.action' + param, 'fullscreen=yes;');
    

    编写controller控制层,有基础的同学应该都能读懂

        /**
         * 添加Word页面
         *
         * @param entity
         * @param request
         * @param model
         * @return
         */
        @GetMapping("addInitStep")
        public String addInitStep(InvitedPaperVo entity, HttpServletRequest request, Model model) throws UnsupportedEncodingException {
            PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
            poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");
            poCtrl.addCustomToolButton("新建模板文件", "Save()", 1);
            poCtrl.setCaption("标题");
    
            UserInfoSession ui = (UserInfoSession) SessionUtils.getSessionAttribute(SessionConst.PC_USER_SESSION);
            UserInfoVo userInfoVo = userInfoService.getUserInfoById(ui);
    
            WordDocument doc = new WordDocument();
            doc.openDataRegion("inviteYear").setValue(entity.getInviteDate().substring(0, 5));
            doc.openDataRegion("inviteDate").setValue(DateUtils.dateClearZero(entity.getInviteDate()));
            doc.openDataRegion("issueNumber").setValue(String.valueOf(entity.getIssueNumber()));
            doc.openDataRegion("content").setValue("");
            doc.openDataRegion("phone").setValue(userInfoVo.getOfficeTel() != null ? userInfoVo.getOfficeTel() : "");
            doc.openDataRegion("createUserName").setValue(userInfoVo.getName() != null ? userInfoVo.getName() : "");
    
            poCtrl.setWriter(doc);
            poCtrl.webOpen(request.getContextPath() + "/office-templates/invited_paper.doc", OpenModeType.docNormalEdit, "tellsea");
            String param = "?title=" + java.net.URLEncoder.encode(entity.getTitle(), "UTF-8")
                    + "&issueNumber=" + entity.getIssueNumber()
                    + "&userIds=" + entity.getUserIds()
                    + "&inviteDate=" + java.net.URLEncoder.encode(entity.getInviteDate(), "UTF-8")
                    + "&attachment=" + java.net.URLEncoder.encode(entity.getAttachment(), "UTF-8")
                    + "&attachmentName=" + java.net.URLEncoder.encode(entity.getAttachmentName(), "UTF-8")
                    + "&delayTimeLimit=" + java.net.URLEncoder.encode(entity.getDelayTimeLimit(), "UTF-8")
                    + "&missTimeLimit=" + java.net.URLEncoder.encode(entity.getMissTimeLimit(), "UTF-8");
            poCtrl.setSaveFilePage(request.getContextPath() + "/invitedPaper/save.action" + param);
            model.addAttribute("poCtrl", poCtrl);
            return "admin/invited_paper_add_office";
        }
    

    controller返回的是一个页面,提供给PageOffice显示,编写页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%String path = request.getContextPath();%>
    <!DOCTYPE html>
    <html>
    <head>
        <title>新建模板文件</title>
        <%@ include file="./common/head.jsp" %>
    </head>
    <body>
    <%@ include file="./common/js.jsp" %>
    <div style="margin:auto; width: 100%; height: calc(100vh - 25px);">
        ${poCtrl.getHtmlCode("PageOfficeCtrl1")}
    </div>
    
    <script type="text/javascript">
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
            if (document.getElementById("PageOfficeCtrl1").CustomSaveResult == "ok") {
                // document.getElementById("PageOfficeCtrl1").Alert('保存成功!');
                if (confirm('保存成功,关闭当前窗口?')) {
                    window.external.close();
                }
            }
        }
    </script>
    </body>
    </html>
    

    然后编写保存请求,从controller中的poCtrl.setSaveFilePage可以得到保存路径

        /**
         * 保存基本信息
         *
         * @param invitedPaperVo
         * @return
         */
        @PostMapping("save")
        @ResponseBody
        public void save(InvitedPaperVo invitedPaperVo) {
            FileSaver fs = new FileSaver(SessionUtils.getRequest(), SessionUtils.getResponse());
            invitedPaperVo.setContent(fs.getFileBytes());
            invitedPaperService.saveInvitedPaper(invitedPaperVo);
            fs.setCustomSaveResult("ok");
            fs.close();
        }
    

    上面是保存二进制的方法,建议保存文件到服务器,然后将访问路径保存到数据库,具体的可以看官方给的示例

    微信公众号

    每天Get一个小技巧

    展开全文
  • 一款在线office插件

    2021-03-02 17:54:04
    一款在线office插件 https://gitee.com/kekingcn/file-online-preview?_from=gitee_search

    一款在线office插件

    https://gitee.com/kekingcn/file-online-preview?_from=gitee_search

    展开全文
  • C# 基于WebOffice实现在线编辑文档,实时保存到服务器(所有office,兼容WPS) 下载WebOffice控件安装; 在服务器指定盘建立office存储文件(本地C盘建立weboffice文件夹,然后搭建iis访问,相当于服务器访问);
  • 在线移除office文档密码。速度快,只支持office2003版本文档。
  • 百会历经多年的研发和改进,已经成为全球市场上目前最成熟的在线Office应用平台,在全球范围内得到了超过500万以上用户的认可,并且成为市场上最具竞争力,且功能最全面的网络办公套件,这些都离不开众多合作伙伴的...
  • 在线OFFICE文档编辑控件,很实用
  • NTKO在线office控件使用实例

    千次阅读 2017-01-19 16:29:00
    1. NTKO在线office控件使用实例 1.1. 基础介绍 1.2. 基本原理 1.3. 实例 1.3.1. 打开、保存部分代码 1.3.2. 动态设值 1.NTKO在线office控件使用实例 1.1.基础介绍  在线Office基础功能有在线打开、...

    目录

    1. NTKO在线office控件使用实例

    1.1. 基础介绍

    1.2. 基本原理

    1.3. 实例

    1.3.1. 打开、保存部分代码

    1.3.2. 动态设值

    1. NTKO在线office控件使用实例

    1.1. 基础介绍

      在线Office基础功能有在线打开、修改、保存文档、动态插入数据等常用功能。具体的介绍请直接参考官方的文档。

    1.2. 基本原理

      当控件向后台请求一个链接加载word文档的时候,对应的后台处理要有一个文件下载的方法,而相似地,当控件向后台保存一个word文档的时候,后台也要有一个文件上传处理的方法。

    1.3. 实例

    1.3.1. 打开、保存部分代码

      1      var path="<%=basePath%>";
      2         var ntkoobj=null;//控件对象
      3         var isFileOpened;//控件是否打开文档
      4         var reloadFlg=0;//重新获取标志
      5         
      6         /**ntko工具对象**/
      7         var ntkoTool={
      8             newDoc:function(docType){
      9                 //新建文档
     10                 ntkoobj = document.all("TANGER_OCX"); //"TANGER_OCX"是网页中的NTKO OFFICE文档控件的ID
     11                 ntkoTool.disableMenu();
     12                 if(null == ntkoobj){ 
     13                     alert("NTKO OFFICE not exist!");
     14                     return;
     15                 }
     16                 if(docType==null||0 == docType.length){
     17                     ntkoobj.CreateNew("Word.Document");//默认是word
     18                 }else{
     19                     if(docType=="word"){
     20                         ntkoobj.CreateNew("Word.Document");
     21                     }else if(docType=="excel"){
     22                         ntkoobj.CreateNew("Excel.Sheet");
     23                     }else if(docType=="ppt"){
     24                         ntkoobj.CreateNew("PowerPoint.Show");
     25                     }
     26                 }
     27             },
     28             openDoc:function(docURL){
     29                 //打开文档
     30                 ntkoobj = document.all("TANGER_OCX"); //"TANGER_OCX"是网页中的NTKO OFFICE文档控件的ID
     31                 ntkoTool.disableMenu();
     32                 if(null == ntkoobj){ 
     33                     alert("NTKO OFFICE not exist!");
     34                     return;
     35                 }
     36                 //打开服务器上的文档
     37                 ntkoobj.BeginOpenFromURL(docURL);
     38             },
     39             disableMenu:function(){
     40                 //禁用菜单
     41                 ntkoobj.FileSave=false;
     42                 ntkoobj.FileSaveAs=false;
     43                 ntkoobj.FileNew=false;
     44                 ntkoobj.FileOpen=false;
     45                 ntkoobj.FileClose=false;
     46             },
     47             saveDoc:function(docURL,noInfo){
     48                 //保存文档
     49                 var fileType="";
     50                 if(isFileOpened){
     51                     switch (ntkoobj.doctype){
     52                         case 1:
     53                             fileType = "Word.Document";
     54                             break;
     55                         case 2:
     56                             fileType = "Excel.Sheet";
     57                             break;
     58                         case 3:
     59                             fileType = "PowerPoint.Show";
     60                             break;
     61                         case 4:
     62                             fileType = "Visio.Drawing";
     63                             break;
     64                         case 5:
     65                             fileType = "MSProject.Project";
     66                             break;
     67                         case 6:
     68                             fileType = "WPS Doc";
     69                             break;
     70                         case 7:
     71                             fileType = "Kingsoft Sheet";
     72                             break;
     73                         default :
     74                             fileType = "unkownfiletype";
     75                     }
     76                     var filePath=$("#filePath").val();
     77                     var fileName=$("#fileName").val();
     78                     var para="?filePath="+filePath+"&fileName="+fileName;
     79                     var result = ntkoobj.saveToURL(docURL+para,"file","fileType="+fileType,fileName,"docFileForm",true);
     80                     if(noInfo==null){
     81                         if(result=='ok'){
     82                             alert("文件保存成功!");
     83                         }
     84                     }
     85                 }else{
     86                     //alert("没有打开的文档可以保存!");
     87                 }
     88             },
     89             closeDoc:function(){
     90                 if(isFileOpened){
     91                     if(confirm("关闭文档前,系统将先保存文档。是否关闭?")){
     92                         ntkoTool.saveDoc('<%=basePath%>/ntko/saveWord.shtml','noInfo');
     93                         ntkoobj.close();
     94                         isFileOpened=false;
     95                     }
     96                 }else{
     97                     //alert("没有文档可关闭!");
     98                 }
     99             },
    100             getTdValue:function(table,rowIndex,colIndex){
    101                 var start=table.Cell(rowIndex,colIndex).range.start;
    102                 var end=table.Cell(rowIndex,colIndex).range.end-1;
    103                 return ntkoobj.ActiveDocument.range(start,end).text;
    104             },
    105             getPageSize:function(){
    106                 //获取word的总页数,和当前页数
    107                 var curpage=TANGER_OCX.ActiveDocument.Application.Selection.Information(3);
    108                 var pagenum=TANGER_OCX.ActiveDocument.Application.Selection.Information(4);
    109                 var arr=new Array();
    110                 arr[0]=pagenum;
    111                 arr[1]=curpage;
    112                 return arr;
    113             }
    114         };

     

     

    1.3.2. 动态设值

    1、在表格末尾加一行设值:

     1 document.all.item("TANGER_OCX").ActiveDocument.Tables(1).rows.add(); 2 table.Cell(0,1).range.Text="123"; 

    2、在表格指定行之前插入一行设值:

    1 var rg =document.all.item("TANGER_OCX").ActiveDocument.Tables(1).Cell(1,1).range;//获取第x行,y列的单元格
    2 document.all.item("TANGER_OCX").ActiveDocument.Tables(1).rows.add(rg);//在rg单元格所在行的前一行插入行
    3 table.Cell(2,1).range.Text="123";

    3、书签方式设值:

     1 ntkoobj.SetBookmarkValue("name","xmq");//模版文档要先加书签 

    转载于:https://www.cnblogs.com/xmqa/p/6307168.html

    展开全文
  • 二、在线Office文档阅读模式 1)用户只能阅读文档,不能对文档做任何修改 2)菜单自定义,可显示或隐藏Office文档的菜单 3)工具栏自定义,可显示或隐藏Office文档的工具栏 三、在线Office文档编辑并保存模式 1...
  • 几种在线Office的对比

    千次阅读 2012-03-29 16:00:20
    现在网上挺流行在线office办公软件,因为有了在线编辑word、表格、演示文稿、PDF,说明无论人在哪里,只要上网就可以编辑文档了,这对于经常出差的朋友会非常实用,而对于我来说,平时会用到多电脑及多系统,所以...
  • 在线office编辑器

    2011-05-26 11:32:13
    在线的网页office编辑器,是基于web开发的
  • 基于网络的“WebOffice”协同办公平台与以往的办公自动化软件不同,它强调以个人工作内容为中心,贯穿着“享受无纸化办公,让工作变得更轻松”的协同设计理念,为信息传递提供简单、便捷的途径,将资源共享最大化;...
  • docker 搭建在线office--onlyoffice (一)

    千次阅读 2020-03-18 00:27:13
    最近项目需要在在线编辑文档功能,固考虑卓正pageoffice、onlyoffice、畅想office 获取docker 镜像 #查找 docker search onlyoffice #拉取 docker pull onlyoffice/documentserver 创建容器:挂载到了...
  • docker 搭建在线office--onlyoffice (三)

    千次阅读 2020-03-28 18:24:57
    配置onlyoffice
  • docker 搭建在线office--onlyoffice (二)

    千次阅读 2020-03-21 19:12:13
    docker获取communityserver docker pull onlyoffice/communityserver
  • 之前打算使用kkFileView来着,讲真的,kk算是为数不多的在线Office预览中最好用的一个 但是呢,因为项目服务器的问题,kk始终运行起来有问题 所以就在某天突然突发奇想,决定用Golang仿制一个kk 目前相对来说比较...
  • 通常大家提到的在线Office大多指的是在线Office运营商提供的服务,例如Google的Google Docs、ZOHO的百会在线Office等,笔者认为这只是一个对在线Office的狭义理解。 事实上,在线Office的功能并不仅仅体现在一个...
  • <br />  MIS系统如何实现在线Office应用  目前大多数企业已经拥有或在建自己的专业MIS(管理信息系统),抑或正在将原来的MIS系统进行升级,由此带来的一个不可避免的问题就是,大量的原有基于微软...
  • 在线Office文档编辑ActiveX插件DsoFramer

    千次阅读 2009-10-26 20:50:00
    在线Office编辑插件DsoFramer[需求]从服务器获取相应文件流,文件格式(word|excel|txt),在网页中呈现。打开的文件不准许(复制、编辑),只准许(查看、打印)排除其它非正常方式获取文档内容,如:(拍照、抓屏)不需要...
  • 在线Office市场烽烟四起 微软的Office软件是人们最常用的办公软件。然而,由于微软Office软件不能运行在浏览器中,所以,目前在网络办公过程中,Office文档通常是作为附件上传下载,这种方式给用户带来了诸多不便。...
  • 开源的在线office

    千次阅读 2015-02-15 02:46:39
    功能支持包括表格的任何元数据、添加工作表/行/列,合并单元格,操作公式等等,并且完美兼容MS Office中的Excel。支持打印哦,亲!  官方地址:http://phpexcel.codeplex.com/  github:...
  • 一个在线office编辑插件webOffice

    千次阅读 2014-06-17 09:58:51
    传送门 6.0

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,727
精华内容 15,090
关键字:

在线office