精华内容
下载资源
问答
  • 对象的嵌入
    千次阅读
    2020-01-11 13:23:44

    记一次莫名其妙的故障排除

    电脑:联想Y7000
    操作系统:WIN 10 64位
    软件: OFFICE 365 EXCEL 64位

    2019年11月,因为某个愚蠢的原因,不得不买了一台新笔记本电脑。也就此告别了使用整整9年的WIN 7系统,正式迈入了WIN 10的新时代。不得不说WIN 10也是一代比较成熟的系统,各方面安全防护都比较好,功能齐全,新电脑大屏高配,开机5S,各种HIGH。

    一、故障出现过程

    笔记本自带正版WIN 10系统和OFFICE学生版(有WORD、EXCEL和POWERPOINT三个基本组件,其实已经够用了),但是本人仍然作死地安装了早早下好OFFICE 2016盗版,请不要学我。

    使用不久,打开EXCEL就时开始提示“不能使用对象链接和嵌入”(Cannot use object linking and embedding),并且在实际操作中无法整体粘贴单元格,会提示“不能粘贴数据”(cannot paste data),严重影响正常使用。

    二、原因排除过程

    由于原系统自带了OFFICE 2019学生版,我试想问题是不是由于原来安装的OFFICE导致的,就完整重装了OFFICE。

    不得不说下这个过程也很曲折,OFFICE这软件是真的脆弱,卸载就极难卸载,使用控制面板里的卸载选项永远卡死在第一步,后来从微软官方系统找了专用卸载工具才搞定的(SetupProd_OffScrub.exe,再次吐槽一下微软,不提供这个软件离线安装下载包,下载下来的只是一个下载工具,且对网络要求极高,基本都得挂VPN才能安装成功)。即使卸载成功了,再次安装的时候也会卡在2%不动弹。最后不得不重装系统解决,因为自带系统重置后也默认安装OFFICE学生版,为此还不得不再买了一个WIN 10的秘钥安装纯净版的WIN 10。按照好系统后,本人在下载OFFICE的过程中习惯性各种360安全卫士、ADOBE READER等常用全家桶都装上了,到了重装OFFICE 365的时候又卡死在3%了(尝试微软官方的建议 link及多个网上解决方案无效)。后来发现必须得在重新安装完的干净系统里的先装OFFICE才能成功。

    但是重新安装后,愉快舒适的使用了三五天很快就又开始出现同样的问题。

    (一)盗版软件?

    本人一开始以为是盗版软件的问题,发现正版的OFFICE 365一年订阅对于上班党也不贵,但是安装了OFFICE 365之后,问题仍然存在。

    (二)OFFICE冲突?

    由于原系统自带了OFFICE 2019学生版,我试想问题是不是由于原来安装的OFFICE导致的,就完整重装了OFFICE。

    不得不说下这个过程也很曲折,OFFICE这软件是真的脆弱,卸载就极难卸载,使用控制面板里的卸载选项永远卡死在第一步,后来从微软官方系统找了专用卸载工具才搞定的(SetupProd_OffScrub.exe,再次吐槽一下微软,不提供这个软件离线安装下载包,下载下来的只是一个下载工具,且对网络要求极高,基本都得挂VPN才能安装成功)。即使卸载成功了,再次安装的时候也会卡在2%不动弹。最后不得不重装系统解决,因为自带系统重置后也默认安装OFFICE学生版,为此还不得不再买了一个WIN 10的秘钥安装纯净版的WIN 10。按照好系统后,本人在下载OFFICE的过程中习惯性各种360安全卫士、ADOBE READER等常用全家桶都装上了,到了重装OFFICE 365的时候又卡死在3%了(尝试微软官方的建议link及多个网上解决方案无效)。后来发现必须得在重新安装完的干净系统里的先装OFFICE才能成功。

    但是重新安装后,愉快舒适的使用了三五天很快就又开始出现同样的问题。

    (三)设置不对?

    本人在搜索了百度上有关问题的描述,发现同时搜索“不能使用对象链接和嵌入”和 “不能粘贴数据”是没有结果的。搜索“不能使用对象链接和嵌入”主要提供的解决方案是对症下药的设置组件对象模式[link](https://www.cnblogs.com/flish/archive/2010/11/19/1881474.html类似的回答也有针对OFFICE 365的),但是全然无效。“不能粘贴数据”主要的解决方案就是解除单元格的安全限制,也不能解决我的问题。

    在使用英文在谷歌上同时搜索两个报错提示,发现有人跟我情况一样link,答案给出的建议是使用按住ctrl安全模式启动EXCEL,如果可以的成功启动,说明是加载项的问题,建议逐一关闭加载项找出具体的问题加载项。本人第一次尝试的时候居然神奇的成功了(当然这只是一次偶然,后面会详细解释),然而关闭掉全部加载项后问题又出现了,添加回这些加载项后,即使安全启动EXCEL问题继续出现了,崩溃。

    (四)软件冲突?

    到了后来,本人对OFFICE甚至有了一丝恐惧,再次重装系统并安装OFFICE以后,什么额外的软件都不敢安装了。可是诚惶诚恐的用了几天之后,问题又出现了,但奇怪的是这次问题出现的频率非常偶然。

    终于有一次,本人在正常启动EXCEL并关闭后,很短时间内再次打开又出现了问题,我才意识到两者之间唯一的不同就是我在打开EXCEL以后处理文件时切换了输入法且关闭后没有切回。这次重装后问题出现很偶然的原因是,反复折腾了几次之后,本人失去了调整系统到自己习惯的心气,系统默认输入法仍然是微软自带的英文输入法,多数时候启动EXCEL时生效的输入法都是默认输入法。

    随后本人多次尝试,发现只要切换到搜狗输入法,启动EXCEL时就会报上述错误,本以为是搜狗的问题,但继而发现切换到微软拼音启动也会报同样的问题,但切换到英语输入法就天下太平。至此反反复复折腾了快两个月,神经都快衰弱了,终于确定了故障来源。

    三、解决过程

    据此,在冤枉了360安全卫士、ADOBE READER、公司OA的插件和搜狗输入法等一众软件后,本人可以确认了中文输入法是导致EXCEL启动时报错“不能使用对象链接和嵌入”并在工作中“不能粘贴数据”的主要问题,但切换到英文就会恢复正常。我百度后发现网上有许多类似的EXCEL和输入法冲突的问题,但完全与我遇到的问题一样的还没有。

    当然,也不能确认所有人的故障原因都和我一样。比如在微软英文论坛上提问同样问题的人应该使用的就不是英文输入法。

    更多相关内容
  • 通过Aspose实现文件对象嵌入Word功能

    千次阅读 2017-06-29 17:55:40
    需求公司系统更新,需要对历史数据进行附件迁移,将老系统A的附件迁移到新系统B中。其中老系统A的一张单据对应着多个... 偶然间发现可以将文件以对象的方式插入到word中,这样在一个word中就可以浏览到老系统的多个附件

    1. 需求

    公司系统更新,需要对历史数据进行附件迁移,将老系统A的附件迁移到新系统B中。其中老系统A的一张单据对应着多个附件,而新系统B要求单据和附件一对一的关系。
    偶然间发现可以将文件以对象的方式插入到word中,这样在一个word中就可以浏览到老系统的多个附件。

    2. 库的选择

    最开始百度啊,使用java操作word的方法,基本上都是poi包。经过搜索和到官网去看并没有发现可以满足需求的操作。接着去Google以下面种种关键字搜索
    insert file object in word java,Insert Embedded or Linked OLE Object in Word, Files embedded OLE objects找到了Aspose.Words。通过OLE(Object Linking and Embedding)对象链接与嵌入的方式进行文本的合并。

    3. 实现

    3.1 代码

    maven地址

    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-barcode</artifactId>
        <version>17.03</version>
    </dependency>

    核心代码

    public static void main(String args[]) throws Exception {
    
            PropertyConfigurator.configure("log4j.properties");
    
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            String MyDir = "C:\\Users\\SN2OV\\Desktop\\wordDemo\\src\\main\\resources\\File\\";
            BufferedImage image = ImageIO.read(new File(MyDir + "word32.png"));
            String fileArr[] = new String[]{"InsertDocument1.doc","InsertDocument2.doc","其他合同模板.docx","商务标.rar",
                    "成本模拟部署测试问题-其他所有模块.xls","其他合同模板.doc","乾鸣国际信息产业园(一期)1号楼、8号楼机电安装工程施工-中标通知书.pdf"};
            for(String file :fileArr){
                if(file.endsWith("png")){
                    Shape shape = builder.insertImage(MyDir + file);
                    builder.writeln();
                    builder.writeln(file);
                    continue;
                }
                Shape oleObject = builder.insertOleObject(MyDir + file, false, true, image);
                builder.writeln(file);
                builder.writeln();
            }
            doc.save(MyDir + "out.docx");
            //清除aspose代理的水印
            Utils.deleteWatermark(MyDir + "out.docx");
        }

    3.2注意事项

    3.2.1 Aspose插入和word中直接将文件对象拖入有区别

    • word原生的插入文件对象图标和文件名是一个整体;而通过Aspose包导入的只能通过人为设置的icon为对象添加图标,同时不能自动显示文件名,需要手动代码添加此功能。
      image
    • 经试验通过Aspose插入的对象文件类型为.doc .docx .xlsx .xls .pdf .jpg .png可以有效的打开,.ppt .pptx属于office自带的应该也可以。
    • builder.insertOleObject方法中,第二个参数为isLinked,设置为false才可以将内置文件完全复制进来,设置true则外部文件仅存储内部文件的地址,当地址改变或者文件删除后内部文件无法打开

    3.1.2 使用Aspose修改word时会默认加上水印

    可以通过其他jar包(比如poi)对该水印进行删除,因为Aspose的水印会自动添加到word的首段,将首段文件进行删除即可去掉水印。

    public static void deleteWatermark(String filePath){
            XWPFDocument doc = null;//word文档对象
            InputStream in_stream = null;
            OutputStream _os = null;
            try{
                in_stream=new FileInputStream(filePath);//文件流
                doc=new XWPFDocument(in_stream);
            }catch(IOException e){
                e.printStackTrace();
            }
            List<XWPFParagraph> _paraList=doc.getParagraphs();//得到一个包含所有段落的List
            XWPFParagraph _p=_paraList.get(0);//获取到第一个段落,根据需要读取相应段落
            List<XWPFRun> _runsList=_p.getRuns();//获取段落中的run列表
            XWPFRun _run=_runsList.get(0);//获取第一个run对象
            String s=_run.getText(0);//获取到run里面的子句字符串
            _run.setText(" ",0);//在0位置插入字符串
            try{
                _os=new FileOutputStream(filePath);
                doc.write(_os);
            }
            catch(IOException e){
                e.printStackTrace();
            }
            try {
                in_stream.close();
                _os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    4.成果

    插入后的效果
    image
    对第一个文件双击打开,浏览嵌入的文件
    image
    为了方便导附件做个壳
    image
    代码地址:http://download.csdn.net/detail/sn2ovfan/9884318

    注:InsertOLE.java的main函数中要简易的demo(运行时要修改文件路径),其他类涉及数据库的连接、附件迁移等代码,无法直接运行。

    展开全文
  • matlab开发-在图像中嵌入文本和图形。在图像中刻录或嵌入文本和图形。
  • OLE 2 对象链接与嵌入技术高级编程技术 pdf 全本 OLE 2 对象链接与嵌入技术高级编程技术 pdf 全本
  • Excel 2007 打开时出现”不能使用对象链接和嵌入“错误,随后Excel就停止工作,并且每次打开都如此!
  • excel中嵌入对象百度无果,自己研究,还问了微软。现在把成果放上来
  • 打开excel时报“不能使用对象链接和嵌入”,如下图 我之前出现这个错误的时候在网上搜寻办法,也找到了进入DCOM 配置程序将标识符在“启动用户”与“交互式用户”之间来回改,但仍然没有用,必须要我重启电脑才不会...

    打开excel时报“不能使用对象链接和嵌入”,如下图

    在这里插入图片描述
    我之前出现这个错误的时候在网上搜寻办法,也找到了进入DCOM 配置程序将标识符在“启动用户”与“交互式用户”之间来回改,但仍然没有用,必须要我重启电脑才不会出现这个问题。
    今天我终于发现了症结所在,我是写程序调用excel表的,当我设了断点,没有把程序跑完便终止掉后,再次运行就会出现这个问题,所以很简单,打开任务管理器,将excel结束任务,再次运行程序为无问题。在这里插入图片描述

    展开全文
  • 当加载一个 QML 对象到一个 C++ 应用程序中时,直接嵌入可以从 QML 代码中使用的一些 C++ 数据是非常有用的。例如,对嵌入对象调用一个 C++ 函数,或者使用一个 C++ 对象实例作为 QML 视图的数据模型。 通过 ...

    简述

    当加载一个 QML 对象到一个 C++ 应用程序中时,直接嵌入可以从 QML 代码中使用的一些 C++ 数据是非常有用的。例如,对嵌入的对象调用一个 C++ 函数,或者使用一个 C++ 对象实例作为 QML 视图的数据模型。

    通过 QQmlContext 类可以将 C++ 数据注入到 QML 对象中。该类将数据暴露给一个 QML 对象的上下文,以便可以直接从 QML 代码中引用数据。

    | 版权声明:一去、二三里,未经博主允许不得转载。

    QQmlContext

    QQmlContext 类定义了 QML 引擎内的上下文,上下文允许将数据暴露给由 QML 引擎实例化的 QML 组件。

    每个 QQmlContext 包含一组属性,允许以名称将数据显式地绑定到上下文。通过调用 QQmlContext::setContextProperty() 来定义和更新上下文属性。

    相应的接口:

    void QQmlContext::setContextProperty(const QString &name, const QVariant &value)
    简单的上下文属性,对应的值为 QVariant 类型。

    void QQmlContext::setContextProperty(const QString &name, QObject *value)
    相对来说稍微复杂一些,QObject * 对象类型。

    可以看出,上下文属性可以保存 QVariant 或 QObject * 类型的值。也就是说,既可以使用这种方式注入简单的 QVariant 类型;也可以注入自定义 C++ 对象,并且这些对象可以在 QML 中被直接修改和读取。

    设置简单的上下文属性

    这里写图片描述

    例如,下面的 QML 文本项,引用了一个当前范围中不存在的 currentDateTime 值:

    // main.qml
    import QtQuick 2.3
    
    Rectangle {
        width: 200; height: 100
    
        Text {
            anchors.centerIn: parent
            text: currentDateTime
        }
    }

    这个 currentDateTime 值可以由加载 QML 组件的 C++ 应用程序直接设置,使用 QQmlContext::setContextProperty():

    // main.cpp
    #include <QGuiApplication>
    #include <QQuickView>
    #include <QQmlContext>
    #include <QDateTime>
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QQuickView view;
        // 设置上下文属性
        view.rootContext()->setContextProperty("currentDateTime", QDateTime::currentDateTime());
        view.setSource(QUrl("qrc:/main.qml"));
        view.setIcon(QIcon(":/logo.png"));
        view.setTitle(QStringLiteral("将C++对象嵌入到带有上下文属性的QML中"));
        view.show();
    
        return app.exec();
    }

    注意: 由于在特定上下文中评估 QML 中的所有求值表达式,因此如果上下文被修改,则该上下文中的所有绑定都将被重新求值。因此,应该在应用程序初始化之外谨慎使用上下文属性,因为这可能会降低应用程序性能。

    将对象设置为上下文属性

    修改上述示例,嵌入一个 QObject 实例而非一个 QDateTime 值,并且从 QML 调用对象实例上的一个函数:

    // application_data.h
    #ifndef APPLICATION_DATA_H
    #define APPLICATION_DATA_H
    
    #include <QObject>
    #include <QDateTime>
    
    class ApplicationData : public QObject
    {
        Q_OBJECT
    
    public:
        Q_INVOKABLE QDateTime getCurrentDateTime() const {
            return QDateTime::currentDateTime();
        }
    };
    
    #endif // APPLICATION_DATA_H

    注意: 并非所有的 C++ 函数都可以从 QML 调用,除了 Q_INVOKABLE() 标记的 public 函数之外,还可以是 public 槽函数。

    和前面的类似,只不过这里传递的是 QObject * 对象类型:

    // main.cpp
    #include <QGuiApplication>
    #include <QQuickView>
    #include <QQmlContext>
    #include "application_data.h"
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QQuickView view;
        // 设置上下文属性
        ApplicationData data;
        view.rootContext()->setContextProperty("applicationData", &data);
        view.setSource(QUrl("qrc:/main.qml"));
        view.setIcon(QIcon(":/logo.png"));
        view.setTitle(QStringLiteral("将C++对象嵌入到带有上下文属性的QML中"));
        view.show();
    
        return app.exec();
    }

    然后,就可以在 QML 中使用 applicationData:

    // main.qml
    import QtQuick 2.3
    
    Rectangle {
        width: 200; height: 100
    
        Text {
            anchors.centerIn: parent
            text: applicationData.getCurrentDateTime()
        }
    }

    注意: 从 C++ 到 QML 返回的 date/time 可以通过 Qt.formatDateTime() 和相关函数进行格式化。

    从上下文属性中接收信号

    如果 QML 需要从上下文属性中接收信号,可以使用 Connections 类型进行连接。

    上面的日期时间是固定不变的,我们来为其添加一个定时器(每秒更新),让时间跑起来:

    这里写图片描述

    例如,ApplicationData 具有一个名为 dataChanged() 的信号,在定时器超时后发射:

    // application_data.h
    #ifndef APPLICATION_DATA_H
    #define APPLICATION_DATA_H
    
    #include <QObject>
    #include <QDateTime>
    #include <QTimer>
    
    class ApplicationData : public QObject
    {
        Q_OBJECT
    
    public:
        ApplicationData() {
            // 定时器
            QTimer *pTimer = new QTimer(this);
            pTimer->setInterval(1000);
            connect(pTimer, &QTimer::timeout, this, &ApplicationData::onTimeout);
            pTimer->start();
        }
    
        Q_INVOKABLE QDateTime getCurrentDateTime() const {
            return m_dateTime;
        }
    
    signals:
        void dataChanged();
    
    private slots:
        void onTimeout() {
            m_dateTime = QDateTime::currentDateTime();
            emit dataChanged();  // 超时后发射信号
        }
    
    private:
        QDateTime m_dateTime;
    };
    
    #endif // APPLICATION_DATA_H

    在 QML 中,定义一个 Connections 对象,将该信号连接至一个名为 onDataChanged 的处理程序:

    // main.qml
    import QtQuick 2.3
    
    Rectangle {
        width: 200; height: 100
    
        Text {
            id: timer
            anchors.centerIn: parent
            text: "Timer"
        }
    
        Connections {  // 连接信号
            target: applicationData
            onDataChanged: {
                timer.text = applicationData.getCurrentDateTime()
                console.log("The application data changed!")
            }
        }
    }

    其中 target 为目标对象,也就是我们的上下文属性 applicationData。

    展开全文
  • word2021链接对象嵌入对象.docx
  • 解决excel 不能使用对象链接和嵌入.txt
  • OLE 2 对象链接与嵌入技术高级编程技术
  • PB对象连接与嵌入
  • 如何在JavaScript对象嵌入私有成员.doc
  • 深度嵌入网络的多视图3D对象检索
  • 多视图光谱嵌入

    2021-02-24 01:34:57
    在计算机视觉和多媒体搜索中,通常使用来自不同视图的多个功能来表示一个对象。 例如,要很好地表征自然场景图像,必须找到一组视觉特征来表示其颜色,纹理和形状信息,并将每个特征编码为矢量。 因此,我们在不同的...
  • #介绍将文件嵌入到一个普通的 javascript 对象中以嵌入浏览器。 如果您正在制作一个 Web 组件,或者只是想通过最小化不必要的 Ajax 请求来提高您的 Web 应用程序的效率,那么这是一个适合您的插件。 使用此插件,您...
  • 匿名嵌入对方法集的影响当匿名嵌入一个对象的时候,编译器会帮我们自动生成间接代码调用,所以看上去拥有了对象的方法,实际上不是拥有而是编译器做了代码补全。接下来看看
  • 在Office2019的Word文档中,双击下载文档的内容,提示【Office已阻止访问以下嵌入对象,以便保护你的安全】,如下图所示: 二、问题分析 由于Office版本限制,Office 2019无法直接打开文档中直接添加的部分...
  • 在dreamweaver中嵌入对象.ppt
  • 在自己的应用程序中嵌入Office,操作word文档.zip
  • 出错提示“Word 未能写某些嵌入对象,因为内容或磁盘空间不足”,感开始怀疑是转换软件,经过诊断,一切完好。问题主要出在word上,文档里插入了比较多的公式和图片,而且这些嵌入对象发生异常。列出解救方法如下:...
  • COinS使用span的class属性来识别上下文对象,并将有关上下文对象的信息嵌入title属性中。 上下文数据是描述上下文对象的经过urlencoded的键值对。 上下文对象的内容 缺少有关特定上下文对象支持哪些属性的真正规范。...
  • 我们开发了一种映射方法,该方法将语义Web数据嵌入到面向对象的语言中,从而可以重用现有的Web应用程序框架。 我们分析了语义Web和Web之间的关系,并调查了语义Web应用程序中的典型数据访问模式。 我们讨论了面向...
  • 行业分类-设备装置-可嵌入媒体上传对象
  • 对象直接量允许将对象描述文字嵌入到JavaScript代码中,就像将文本数据嵌入在JavaScript代码中,就像将文本数据嵌入在JavaScript代码中作为引用的字符串一样。对象直接量是由属性说明列表构成的,这个列表包含在大...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 249,589
精华内容 99,835
关键字:

对象的嵌入