【问题标题】:How to load the datafile to Automated Excel Sheet document?如何将数据文件加载到自动 Excel 工作表文档?
【发布时间】:2012-09-22 09:54:33
【问题描述】:

我有一个 MFC/C++ 项目,它使用 ActiveX 文档(自动化)方法打开 Excel 表嵌入对象。不幸的是,Excel.Sheet obj API 没有从预先准备好的 htm/cvs 文件中加载数据的方法。所以,我无法加载准备好的数据。唯一能够从文件加载数据的对象是“工作簿”(方法 Open(...)),但它总是创建一个新的工作表对象,并且不使用现有的工作表对象。所有使用嵌入式 Excel.Sheet 文档的示例都提供“手动”填充表格单元格,没有人展示如何打开其中的现有文件。

那么,如何将 html/cvs 数据文件加载到自动 Excel 表格文档中?

【问题讨论】:

    标签: c++ excel automation activex


    【解决方案1】:

    您可以使用 OleObjects 将任何文件(任何类型)嵌入到 Excel 工作表中。这是附加文件的示例代码:

    BOOL InsertFileToWorksheet(Exl_Worksheet &ws, LPCTSTR lpFilePath, LPCTSTR ObjName)
    
    { 
        RemoveOldOleObj(ws,ObjName);
    
        VARIANT vFileName;
        str_to_vt(vFileName,(char*)lpFilePath);
        ExlOLEObjects ole_objects;
    
        BOOL bRes(TRUE);
        try{
            ole_objects = ws.OLEObjects( vOptional );
    
            COleVariant left(10l),top(10l),width(1l),height(1l);
            Exl_OLEObject objSrc = ole_objects.Add(vOptional,vFileName,vOptional,vOptional,vOptional,vOptional,vOptional,
                            vOptional,vOptional,vOptional,vOptional);
            objSrc.SetName(ObjName);
        }catch(...){
            bRes = FALSE;
        }
    
        VariantClear(&vFileName);
        return bRes;
    }
    
    void RemoveOldOleObj(Exl_Worksheet &ws, LPCTSTR ObjName )
    {
        ExlOLEObjects ole_objects;
        try{
            ole_objects = ws.OLEObjects( vOptional );
        }catch(...){
            return;
        }
    
        VARIANT vObjName;
        str_to_vt(vObjName,(char*)ObjName);
        Exl_OLEObject obj;
    
        try{
            obj = ole_objects.Item(vObjName);
            obj.Delete();
        }catch(...){
        }
        VariantClear(&vObjName);
    
    }
    

    完整的源代码(c++)你可以找到in this article

    【讨论】:

      【解决方案2】:

      事实证明,没有办法创建由文件格式初始化的 ActiveX Excel Sheet Document 与 xls/xlsx 不一致。首先需要将html格式转换成xls/xlsx,然后通过标准的OLE API(OleCreateFromFile)打开。 我描述的转换in the link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        • 2021-03-30
        相关资源
        最近更新 更多