精华内容
下载资源
问答
  • 将常用Word2021文档名称添加到Word工具栏.docx
  • 多人协作时编辑word文档的一个小窍门  最近在工作中编写标书时由于不同内容分给了各个部门去制作,但是在汇总后遇到再次修改的问题。对方把修改后的部分文档发给我粘贴到标书中后,所有的格式全部都乱了。重新整理...

    多人协作时编辑word文档的一个小窍门

      最近在工作中编写标书时由于不同内容分给了各个部门去制作,但是在汇总后遇到再次修改的问题。对方把修改后的部分文档发给我粘贴到标书中后,所有的格式全部都乱了。重新整理格式、标题,每次导入新的文档都重复这个工作,真是低效啊。事后想想word这么高级的文档编辑工具,肯定会有解决办法吧?

    解决办法一 文档合并

    将每个章节划分为多个文档,文档名称命名为章节编号,然后:

      我们需要新建一个word文档并对这个文档的页面进行设置,使之与要合并的其他文档的页面设置保持一致,或者直接打开要合并文档中的第一个,然后在此基础上操作。单击菜单栏中的“插入”,然后找到“对象”选项并点击“对象”右侧下来箭头,选中“文件中的文字”。在弹出的“插入文件”对话框中依次选中你要合并的word文档,然后单击“插入”,即可完成。

    解决办法二 使用子文档功能

      首先,需要保证原文档中各节已经存在标题级别,这可以利用“样式”功能实现。接下来切换到“视图”选项卡,在这里选择“大纲视图”,你可以按照需要对节进行适当处理;单击“显示文档”按钮,会看到“创建”和“插入”两个功能按钮,将光标定位到包含标题的行,单击“创建”按钮即可自动创建子文档,然后确认保存就可以了。


    展开全文
  •  PageOffice能实现不同用户同时编辑一个Word文档的不同区域,且保存后不会相互影响和覆盖他人编辑修改的内容。  在线对Word文档进行编辑时,可能会出现多人同时访问、编辑同一个文档中不同区域的情况,例如多个...

    1、功能介绍

             PageOffice能实现不同用户同时编辑一个Word文档的不同区域,且保存后不会相互影响和覆盖他人编辑修改的内容。

             在线对Word文档进行编辑时,可能会出现多人同时访问、编辑同一个文档中不同区域的情况,例如多个老师同时在线批改一份试卷的不同题目、多个领导审批一份文件并要在不同的地方加注不同的审批意见等等。要想实现这些功能,一般来说,在写程序时,既要给不同的用户分配不同的权限和其可编辑的区域,还要控制不同用户在编辑完自己的可编辑区域后保存文件时不能覆盖他人的编辑内容。若是只给不同用户分配不同权限是十分简单和容易实现的,在此篇文章中不再多说,但是以往的编程方法根本无法实现多个用户同时编辑Word中的不同区域,而且保存时也无法控制当前用户保存的内容不覆盖前者保存的内容。

             而通过PageOffice中的数据区域(即DataRegion类)来实现不同用户同时编辑一个Word文档中不同并且保存时相互不受影响这一系列的功能就变得相当简单而容易了。

    什么是数据区域?数据区域是Word文档中具有 "PO_" 前缀命名的书签所定位的文档区域。简单来说,数据区域就是一种特殊的Word书签对象,便于定位Word文档中的内容。数据区域是PageOffice开发平台中重要的技术概念。

    这里举个简单的例子说明什么是数据区域:假设开发者需要在待打开的Word文档指定位置处显示产品名称,就可以先手动打开此Word文档,在指定位置处插入书签"PO_ProductName",保存文档。这样数据区域"ProductName"就定义好了。编写代码 doc.OpenDataRegion("ProductName").Value ="PageOffice"; 即可在此数据区域处生成想要的内容。

    数据区域的填充及数据区域格式的控制都是通过DataRegion类实现的,很多Word操作都需要调用DataRegion类完成。DataRegion类能通过调用 OpenDataRegion(String) 方法或CreateDataRegion(String, DataRegionInsertType, String) 方法获得 DataRegion 对象。

             PageOffice实现多用户同时编辑一个Word文档只需先在一个Word文档中可编辑区域的各个位置分别插入书签做成Word模版,模版中有几个可编辑区域再相应地创建几个Word文档,最后通过程序将这些Word动态填充到数据区域中就可以实现多人同时编辑一个Word文档了。

             一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。

    第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中

     

    第二种方法:选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……

    注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

    PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。

    在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。

    在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”(或者小写的“po_”)开头的书签才叫数据区域,请大家注意这点。

     

    二、不同用户同时编辑Word文档中的不同区域的具体实现方法

             PageOffice多用户同时编辑一个Word文档中的不同区域的实现过程很简单,只需要将PageOfficeCtrl控件类结合WordDocument类和DataRegion类使用即可实现,具体的实现步骤如下:

             ①先在一个Word文档中设置好文档的正文,再在要设置可编辑区域的各个位置分别插入书签(命名为“PO_com1”、“PO_com2”、)做成Word模版,命名为“test.doc”。

     

             ②“test.doc”模版中设置了几个数据区域,就相应地再创建几个Word文档,分别命名为“content1.doc”、“content2.doc”等。在这些创建的Word文档中可以根据需要设置文本格式和样式。

     

             ③在程序中,通过DataRegion类将那些创建的Word文档动态填充到数据区域中。部分代码如下:

             WordDocument doc = new WordDocument();

        //打开数据区域

        DataRegion d1 = doc.openDataRegion("PO_com1");

        DataRegion d2 = doc.openDataRegion("PO_com2");

        //给数据区域赋值

        d1.setValue("[word]doc/content1.doc[/word]");

        d2.setValue("[word]doc/content2.doc[/word]");

        注意:若要多人编辑Word文件后保存时不会相互覆盖保存结果,那么,就要将各个数据区域中的内容分别保存到单独的Word文件中。因此,在动态填充数据区域时,一定要将DataRegion对象的属性“SubmitAsFile”设置为true。如下:

        d1.setSubmitAsFile(true);

        d2.setSubmitAsFile(true);

    这样以来,在保存时PageOffice就会分别将数据区域的内容保存到单个的Word文件中。

     

        数据区域值的类型可以是文本类型、Word文件类型、Excel文件类型、图片类型等。一般将Word、Excel、图片类型的值赋值给数据区域时,写法为:“[word]word文件路径[/word]”、“[excel]excel文件路径[/excel]”、“[image]image图片路径[/image]”。此处为了实现多人同时编辑保存一个Word文档且保存结果互不受影响的效果, 只使用Word文件类型。

             PageOffice标准版只支持文本类型,专业版只支持文本、图片和Word文件类型,企业版文本、Word文件、Excel文件、Image图片类型都支持。使用时请一定要注意。

    数据区域的具体使用方法和属性设置请参见相应开发语言的开发帮助和开发示例包中的示例。

     

             ④在程序中,控制不同用户对Word文档中不同数据区域的可编辑性,即设置DataRegion类对象的Editing属性,设置为true,即表示该数据区域可编辑;设置为false,则表示该数据区域不可编辑,该属性的默认值为false

             d1.Editing = true; //数据区域可编辑

        d2.Editing = false; //数据区域不可编辑

     

             ⑤调用PageOfficeCtrl控件类的WebOpen(Stringfilename, OpenModeType type, String userName)方法打开Word文件(“test.doc”)。注意,为了实现提交数据区域中的数据和将其分别保存到不同的Word文件中(“content1.doc”、“content2.doc),WebOpen()方法中的第二个参数,即Word文档的打开模式需使用“docSubmitForm”。

     

             ⑥编辑完内容,点击保存按钮保存Word文档时,PageOffice会在保存页面中将各个数据区域内编辑的内容分别保存到各自的Word文档(“content1.doc”、“content2.doc)中。但是模版文档“test.doc”是不会提交和保存的,这一点请注意。还有美中不足的就是不同用户在不同数据区域内进行编辑时,页面中不能实时的显示Word中其它数据区域内的编辑内容,需保存再刷新页面后才能显示。

            

             PageOffice不同用户同时编辑一个Word文档中不同区域并保存的部分实现代码如下:

             //Java实现代码

             控制不同用户同时编辑一个Word文档中不同区域的代码:

        ... ...

        WordDocument doc = new WordDocument();

        //打开数据区域

        DataRegion d1 = doc.openDataRegion("PO_com1");

        DataRegion d2 = doc.openDataRegion("PO_com2");

     

        //给数据区域赋值

        d1.setValue("[word]doc/content1.doc[/word]");

        d2.setValue("[word]doc/content2.doc[/word]");

     

        //若要将数据区域内容存入文件中,则必须设置属性“setSubmitAsFile”值为true

        d1.setSubmitAsFile(true);

        d2.setSubmitAsFile(true);

     

        //根据登录用户名设置数据区域可编辑性

        //甲客户:zhangsan登录后

        if (userName.equals("zhangsan")) {

            d1.setEditing(true); //设置数据区域为可编辑

            d2.setEditing(false); //设置数据区域为不可编辑

        }

        //乙客户:lisi登录后

        ... ...

        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);

        poCtrl.setWriter(doc); //不要忘记此句

        poCtrl.addCustomToolButton("保存", "Save", 1); //添加自定义保存按钮

        ... ...

        poCtrl.setSaveDataPage("SaveData.jsp?userName=" + userName); //设置保存页

        poCtrl.webOpen("doc/test.doc", OpenModeType.docSubmitForm, userName);//打开模式为:docSubmitForm

        poCtrl.setTagId("PageOfficeCtrl1");//此行必须

     

             保存页面代码:

             ... ...

        WordDocument doc = new WordDocument(request, response);

        //根据用户名判断要保存到哪个Word文件中

        if (request.getParameter("userName") != null &&request.getParameter("userName").trim().equalsIgnoreCase("zhangsan")) {

            bytes = doc.openDataRegion("PO_com1").getFileBytes();

            filePath = "content1.doc";

        }

        ... ...

        //将文件流保存到Word文档中

        FileOutputStream outputStream = new FileOutputStream(filePath);

        outputStream.write(bytes);

        outputStream.flush();

        outputStream.close();

            

             //C#实现代码

             控制不同用户同时编辑一个Word文档中不同区域的代码:

             WordDocument doc = new WordDocument();

        DataRegion d1 = doc.OpenDataRegion("PO_com1");//打开数据区域

        d1.Value= "[word]doc/content1.doc[/word]"; //给数据区域赋值

        d1.SubmitAsFile= true; //若要将数据区域内容存入文件中,则必须设置属性“SubmitAsFile”值为true

        ......

        //根据登录用户名设置数据区域可编辑性

        //甲客户:zhangsan 登录后

        if (userName.Equals("zhangsan"))

        {

            d1.Editing= true;

            d2.Editing= false;

        }

        //乙客户:lisi 登录后

        ......

        PageOfficeCtrl1.AddCustomToolButton("保存", "Save",1); //添加自定义按钮

        ......

        PageOfficeCtrl1.SaveDataPage= "SaveData.aspx?userName=" +userName; //设置保存页

        PageOfficeCtrl1.WebOpen("doc/test.doc", PageOffice.OpenModeType.docSubmitForm, userName);//打开文档

            

             保存页面代码:

             PageOffice.WordReader.WordDocument doc = newPageOffice.WordReader.WordDocument();

        //判断登录的用户

        if (Request.QueryString["userName"]!= null && Request.QueryString["userName"].Equals("zhangsan"))

        {

            saveBytesToFile(doc.OpenDataRegion("PO_com1").FileBytes, Server.MapPath("doc/content1.doc"));//保存数据区域的内容到相应的Word文档中

        }

        ......

             //保存文件流到Word文件中

       private voidsaveBytesToFile(byte[] bytes, string filePath)

       {

           FileStream fs = new FileStream(filePath,System.IO.FileMode.OpenOrCreate);

           fs.Write(bytes, 0, bytes.Length);

           fs.Close();

    }

     

             上述示例的完整代码请参考相应开发语言的Samples示例包中高级功能的第19个示例:“ 控制不同用户编辑 Word 文档中不同的区域(可同时编辑) (企业版)”。
    展开全文
  • html导出 word文档教程

    万次阅读 多人点赞 2017-10-19 13:24:47
    最近搞项目 需要用到导出word 文档,由于呢 他要显示word格式,我就 用word文档生成模板,现在 分享给大家。 这是我在网上找的 demo,按照 功能 不错大家可以看看 1、加入两个外部js FileSaver.js /* ...

    最近搞项目 需要用到导出word 文档,由于呢 他要显示word格式,我就 用word文档生成模板,现在 分享给大家。

    这是我在网上找的 demo,按照 功能 不错大家可以看看

    1、加入两个外部js

    FileSaver.js

    /* FileSaver.js
     * A saveAs() FileSaver implementation.
     * 1.3.2
     * 2016-06-16 18:25:19
     *
     * By Eli Grey, http://eligrey.com
     * License: MIT
     *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
     */
    
    /*global self */
    /*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
    
    /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
    
    var saveAs = saveAs || (function(view) {
        "use strict";
        // IE <10 is explicitly unsupported
        if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
            return;
        }
        var
              doc = view.document
              // only get URL when necessary in case Blob.js hasn't overridden it yet
            , get_URL = function() {
                return view.URL || view.webkitURL || view;
            }
            , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
            , can_use_save_link = "download" in save_link
            , click = function(node) {
                var event = new MouseEvent("click");
                node.dispatchEvent(event);
            }
            , is_safari = /constructor/i.test(view.HTMLElement)
            , is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
            , throw_outside = function(ex) {
                (view.setImmediate || view.setTimeout)(function() {
                    throw ex;
                }, 0);
            }
            , force_saveable_type = "application/octet-stream"
            // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
            , arbitrary_revoke_timeout = 1000 * 40 // in ms
            , revoke = function(file) {
                var revoker = function() {
                    if (typeof file === "string") { // file is an object URL
                        get_URL().revokeObjectURL(file);
                    } else { // file is a File
                        file.remove();
                    }
                };
                setTimeout(revoker, arbitrary_revoke_timeout);
            }
            , dispatch = function(filesaver, event_types, event) {
                event_types = [].concat(event_types);
                var i = event_types.length;
                while (i--) {
                    var listener = filesaver["on" + event_types[i]];
                    if (typeof listener === "function") {
                        try {
                            listener.call(filesaver, event || filesaver);
                        } catch (ex) {
                            throw_outside(ex);
                        }
                    }
                }
            }
            , auto_bom = function(blob) {
                // prepend BOM for UTF-8 XML and text/* types (including HTML)
                // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
                if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
                    return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
                }
                return blob;
            }
            , FileSaver = function(blob, name, no_auto_bom) {
                if (!no_auto_bom) {
                    blob = auto_bom(blob);
                }
                // First try a.download, then web filesystem, then object URLs
                var
                      filesaver = this
                    , type = blob.type
                    , force = type === force_saveable_type
                    , object_url
                    , dispatch_all = function() {
                        dispatch(filesaver, "writestart progress write writeend".split(" "));
                    }
                    // on any filesys errors revert to saving with object URLs
                    , fs_error = function() {
                        if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
                            // Safari doesn't allow downloading of blob urls
                            var reader = new FileReader();
                            reader.onloadend = function() {
                                var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
                                var popup = view.open(url, '_blank');
                                if(!popup) view.location.href = url;
                                url=undefined; // release reference before dispatching
                                filesaver.readyState = filesaver.DONE;
                                dispatch_all();
                            };
                            reader.readAsDataURL(blob);
                            filesaver.readyState = filesaver.INIT;
                            return;
                        }
                        // don't create more object URLs than needed
                        if (!object_url) {
                            object_url = get_URL().createObjectURL(blob);
                        }
                        if (force) {
                            view.location.href = object_url;
                        } else {
                            var opened = view.open(object_url, "_blank");
                            if (!opened) {
                                // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
                                view.location.href = object_url;
                            }
                        }
                        filesaver.readyState = filesaver.DONE;
                        dispatch_all();
                        revoke(object_url);
                    }
                ;
                filesaver.readyState = filesaver.INIT;
    
                if (can_use_save_link) {
                    object_url = get_URL().createObjectURL(blob);
                    setTimeout(function() {
                        save_link.href = object_url;
                        save_link.download = name;
                        click(save_link);
                        dispatch_all();
                        revoke(object_url);
                        filesaver.readyState = filesaver.DONE;
                    });
                    return;
                }
    
                fs_error();
            }
            , FS_proto = FileSaver.prototype
            , saveAs = function(blob, name, no_auto_bom) {
                return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
            }
        ;
        // IE 10+ (native saveAs)
        if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
            return function(blob, name, no_auto_bom) {
                name = name || blob.name || "download";
    
                if (!no_auto_bom) {
                    blob = auto_bom(blob);
                }
                return navigator.msSaveOrOpenBlob(blob, name);
            };
        }
    
        FS_proto.abort = function(){};
        FS_proto.readyState = FS_proto.INIT = 0;
        FS_proto.WRITING = 1;
        FS_proto.DONE = 2;
    
        FS_proto.error =
        FS_proto.onwritestart =
        FS_proto.onprogress =
        FS_proto.onwrite =
        FS_proto.onabort =
        FS_proto.onerror =
        FS_proto.onwriteend =
            null;
    
        return saveAs;
    }(
           typeof self !== "undefined" && self
        || typeof window !== "undefined" && window
        || this.content
    ));
    // `self` is undefined in Firefox for Android content script context
    // while `this` is nsIContentFrameMessageManager
    // with an attribute `content` that corresponds to the window
    
    if (typeof module !== "undefined" && module.exports) {
      module.exports.saveAs = saveAs;
    } else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {
      define([], function() {
        return saveAs;
      });
    }

    2)jquery.wordexport.js

    if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") {
        (function($) {
            $.fn.wordExport = function(fileName) {
                fileName = typeof fileName !== 'undefined' ? fileName : "jQuery-Word-Export";
                var static = {
                    mhtml: {
                        top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>",
                        head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n",
                        body: "<body>_body_</body>"
                    }
                };
                var options = {
                    maxWidth: 624
                };
                // Clone selected element before manipulating it
                var markup = $(this).clone();
    
                // Remove hidden elements from the output
                markup.each(function() {
                    var self = $(this);
                    if (self.is(':hidden'))
                        self.remove();
                });
    
                // Embed all images using Data URLs
                var images = Array();
                var img = markup.find('img');
                for (var i = 0; i < img.length; i++) {
                    // Calculate dimensions of output image
                    var w = Math.min(img[i].width, options.maxWidth);
                    var h = img[i].height * (w / img[i].width);
                    // Create canvas for converting image to data URL
                    var canvas = document.createElement("CANVAS");
                    canvas.width = w;
                    canvas.height = h;
                    // Draw image to canvas
                    var context = canvas.getContext('2d');
                    context.drawImage(img[i], 0, 0, w, h);
                    // Get data URL encoding of image
                    var uri = canvas.toDataURL("image/png");
                    $(img[i]).attr("src", img[i].src);
                    img[i].width = w;
                    img[i].height = h;
                    // Save encoded image to array
                    images[i] = {
                        type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")),
                        encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")),
                        location: $(img[i]).attr("src"),
                        data: uri.substring(uri.indexOf(",") + 1)
                    };
                }
    
                // Prepare bottom of mhtml file with image data
                var mhtmlBottom = "\n";
                for (var i = 0; i < images.length; i++) {
                    mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n";
                    mhtmlBottom += "Content-Location: " + images[i].location + "\n";
                    mhtmlBottom += "Content-Type: " + images[i].type + "\n";
                    mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n";
                    mhtmlBottom += images[i].data + "\n\n";
                }
                mhtmlBottom += "--NEXT.ITEM-BOUNDARY--";
    
                //TODO: load css from included stylesheet
                var styles = "";
    
                // Aggregate parts of the file together
                var fileContent = static.mhtml.top.replace("_html_", static.mhtml.head.replace("_styles_", styles) + static.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom;
    
                // Create a Blob with the file contents
                var blob = new Blob([fileContent], {
                    type: "application/msword;charset=utf-8"
                });
                saveAs(blob, fileName + ".doc");
            };
        })(jQuery);
    } else {
        if (typeof jQuery === "undefined") {
            console.error("jQuery Word Export: missing dependency (jQuery)");
        }
        if (typeof saveAs === "undefined") {
            console.error("jQuery Word Export: missing dependency (FileSaver.js)");
        }
    }

    2、在页面加入一个div或者在body上面加入一个id,div和body必须包含要导出的部分注意要把导出的WORD模板放入此DIV里面,应网友而补更新, 步骤是自己在office word里面将写好的模型保存为html然后将其复制,当然样式也不能丢,得放进css样式里面,html呢就将其放到div里面

    <div id="export_word">
        <p>要导出的页面内容</p>
    </div>
    

    3、可以指定id内容导出(按钮名称exportWord())

     
    <a href="javascript:void(0)" class="btn btn-primary" onclick="exportWord()">导出</a>

    function exportWord(){
        $("#export_word").wordExport();
    }

    4、也可以在自己的js里面写入(具体按钮自己写入方法名称exportWord(),按钮的id="export_word")

    function exportWord(){
        $("#export_word").hide();
        $("html").wordExport();
        $("#export_word").show();
    }

    展开全文
  • word文档密码破解

    万次阅读 热门讨论 2018-12-20 16:39:12
    有的时候,为了保护word文档不被编辑以及被其他人乱修改,我们会对word文档进行一个密码设置,以此来保护word文档。可是当我们忘记设置的密码怎么办? 我们可以尝试下面的方法: 法一:借助破解工具:Word ...

    有的时候,为了保护word文档不被编辑以及被其他人乱修改,我们会对word文档进行一个密码设置,以此来保护word文档。可是当我们忘记设置的密码怎么办?

    我们可以尝试下面的方法:

    法一:借助破解工具:Word Password Recovery Master 

    步骤:

    £¨1 下载Word Password Recovery Master软件,下载地址为:http://www.pcsoft.com.cn/soft/155849.html选择本地下载即可,按流程简单几步即可完成操作下载。

    £¨2 打开软件,选择要破解的加密文档:

     

    £¨3 点击crack(破解),然后ok,就会开始破解密码了

    £¨4 成功后,都会变为none,且在加密文档的同一个文件夹下,本例是桌面,可以看到一个“同名称的(DEMO)”文档,代表这是经过清除密码的文档。

    £¨5 双击这份DEMO文档,没有提示让输入密码的提示框了,顺利进入了word编辑页面。

    注意事项:(1)破解过程需有网络连接;(2)此方法虽可破解密码,但无法查看当初设置的密码;(3)此方法破解强度高,组合密码,10位以上密码等都可被破解;(4)网上方法很多,但多数不可用,后面会继续探索新方法。

     

     

    展开全文
  • 修改word文档中已有的批注者名称

    千次阅读 热门讨论 2019-04-21 11:49:42
    word中可以通过修改用户的信息实现新建的批注者显示不同的名称,但是对于文档中已有的批注则无法进行修改,在vba中通过word.documents(1).comments(1).contact 属性允许读取批注者名称,但是不允许修改。因此,我们...
  • 首先在word文档中定义bookmark名称,例如我定义了EmployeeTable 和 SICTable。使用builder.MoveToBookmark("EmployeeTable");定位到EmployeeTable Bookmark public void GenerateDocument(string Document...
  • 1、第一步通过office软件将word文档命名好字段名称 2、第二步通过office软件保存文件为xml文件(注意保存成xm文件后,字段可能会出现顺序错乱的问题,需要检查字段是否为${字段名}紧凑在一起) 3、第三步通过notepad...
  • XML导出word文档

    千次阅读 2018-01-25 10:58:12
    最近做项目,需要导出word文档的报表,网上查询了一些资料,感觉用xml做这个相对比较简单,Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker...
  • 在逐浪CMS后台编辑器中,可直接导入word中所有内容,此项功能可为编辑提供3-5倍的工作效率。方法步骤: 首先进入网站后台: 按照红色箭头及相应步骤操作:内容-->按栏目管理 选择左侧相应栏目名称,可找到...
  • word文档乱码了怎么办

    千次阅读 2019-09-17 16:36:07
    word文档对于每个使用电脑办公的人来说在熟悉不过了,但是有时候会出现电脑死机或者断电的情况,导致电脑强行关闭来不及保存文档,待恢复之后再打开电脑就变成乱码,那么遇到文档乱码要怎么办呢?怎么恢复word文档呢?...
  • Java导出Word文档的实现

    万次阅读 热门讨论 2020-10-18 16:17:13
    在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表、医院的患者统计报表、电商平台的销售报表等等。 导出Word方式多种多样,通常有以下几种方式: 1. 使用第三方Java工具类库Hutool...
  • word文档属性自定义We recently showed you how to set the user information in Word. Word also stores several additional advanced properties related to your documents. Some of these are displayed on the ...
  • java逐行读取word文档

    千次阅读 2019-05-31 14:24:05
    java逐行读取word文档 最近需要一个读取word文档写入数据库的操作,在网上找了很多大神的代码,不是很懂,所以我根据大神的代码自己写了一个,希望对大家有所帮助 BufferedReader bufferedReader = null; File ...
  • 在OA系统中,有时会出现在线打开word文档实现指定用户只能编辑指定区域的需求。这就需要我们学习微软activex控件的使用了。但是这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,...
  • 本程序编写环境.NET 4.0、 VS2010,语言为C#,通过引用... [字段1:联系人] [字段2:联系电话] 根据检测出的字段编辑Word模板文件,添加相应字段的书签到模板文件,然后选择模板文件,最后批量生成Word文档到指定文件夹。
  • php导出word文档样式以及word文档分页

    千次阅读 2015-06-07 08:24:50
    在导出word的时候,导出来的文档 ,并不是和...边框线:一般word文档的格式,一个框里包含一个标题,然后这个标题下紧凑的跟着一个内容框,或者是两个到三个内容框,你会说很简单啊,第一个框定个宽度,跟着这个宽度
  • 用FreeMarker生成Word文档

    千次阅读 2016-11-22 10:52:47
    顾名思义, Word文档, document 有文档的意思, archive 也有文档的意思。 `.doc`, `.docx`, `.xls`, `.xlsx` 等文件全部都是ZIP格式的,将文件重命名为 `xxx.zip` 之后,就可以看到压缩文件的结构了。 本文简要介绍...
  • 在前面的实例中已经详细介绍了怎样使用C#创建Word文档,本实例将会使用C#方便的向指定的Word文档中输入文本内容。实例运行效果如图1所示。 图1 向Word文档中写入文字 实例运行中单击“创建Word文档”按钮,会根据...
  • 使用说明 功能:把一个文件夹下面的word文档按...把目录下的文档名称写入filelist.txt文件里面,调整测试用文档的顺序。 2、createManyToOneWordAndSave 把filelist.txt文档合并成一个文档,保存在《合并后文档.docx》
  • java生成word文档

    万次阅读 2019-05-15 10:25:41
    最近工作需要从数据库查询数据,代码生成word文档,便在网上查询了一下办法。之前类似的工作也曾经做过,当时是在word模板中设置标记,在代码中填充标记。当前网络上简便的方法也是类似,word文档不是凭空生成的,...
  • Java POI 生成Word文档

    万次阅读 多人点赞 2017-01-09 15:31:58
    在开发中有时候我们需要导出MS word文档。最近因为需要做一个生成word文件的功能。就将这块拿出来和大家分享。  生成word文件和我们写word文档是相同的概念,只不过在这里我们换成了用代码来操作。下面的例子中...
  • Word文档被限制编辑,怎么破?

    万次阅读 2018-07-29 18:14:57
    在这样一个鱼目混杂的... 今天跟大家分享的一个话题是:在Word文档被限制编辑后,如果在知道或是不知道密码的情况下,想对原文档进行一些编辑和改动,该怎么办呢?前者很简单,大家主要把注意力放在后面一种,让我...
  • Pyhton读取word文档

    千次阅读 2018-09-11 00:16:06
    现在我需要读取word文档的内容,所要研究的python-docx模块。这一模块的名称的“docx”。利用它打开文档,三句代码就够了。 import docx #获得文档 file=docx.Document("1.docx") #按照段落读取文档...
  • 实例说明 在Word文档的使用过程中,我们可以...实例运行中单击“创建Word文档”按钮,会根据用户选择的路径位置创建Word文档并向文档中添加图片,而文档的名称就是当前系统日期与时间。创建的Word文档如图2所示。 ...
  • 主要介绍了C#采用OpenXml给Word文档添加表格的方法,是OpenXml操作Word的一个非常实用的技巧,需要的朋友可以参考下
  • matlab生成word文档

    千次阅读 2020-09-21 21:11:54
    %利用MATLAB生成Word文档 filespec_user = [pwd '\测试.doc'];% 设定测试Word文件名和路径 % 判断Word是否已经打开,若已打开,就在打开的Word中进行操作,否则就打开Word try % 若Word服务器已经打开,返回其句柄...
  • word文档设置锚点

    千次阅读 2019-04-25 14:16:38
    有时候,我们在使用word文档的时候,需要能根据关键字跳转到关联的位置。其实就是类似html页面上的锚点,点击锚点信息,就能到达相应的解释或者具体详细介绍部分。类似如下的效果: 这个设置很简单,只需要两步就...
  • Java用Freemarker 生成word文档

    万次阅读 2017-02-28 20:41:25
    java用freemarker生成word文档.  步骤如下: 1,新建一个word文档,另存为test.xml 格式的. 2,新建java类. (使用freemarker-2.3.10.jar包. 请自行下载.) 3,把里面需要替换的换成${name}这种. 对应语法参考freemarker ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,403
精华内容 36,161
关键字:

如何编辑word文档名称