0

Excel Sheet埋め込みオブジェクトを開くためにActiveXドキュメント(自動化)アプローチを使用するMFC /C++プロジェクトがあります。残念ながら、Excel.Sheet obj APIには、準備されたhtm/cvsファイルからデータをロードするメソッドがありません。そのため、用意したデータを読み込めません。ファイルからデータをロードできる唯一のオブジェクトは「ワークブック」(メソッドOpen(...))ですが、常に新しいSheetオブジェクトを作成し、既存のオブジェクトを使用しません。埋め込まれたExcel.Sheetドキュメントの使用例はすべて、テーブルセルを「手動で」入力することを提供しており、既存のファイルを開く方法を示している人は誰もいません。

では、html / cvsデータファイルを自動Excelシートドキュメントにロードする方法は?

4

2 に答える 2

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 ++)。

于 2013-04-14T13:05:34.093 に答える
0

結局のところ、ファイル形式で初期化されたActiveXExcelシートドキュメントを作成する方法はxls/xlsxと一致しません。まず、html形式をxls / xlsxに変換してから、標準のOLE API(OleCreateFromFile)で開く必要があります。リンクで説明した変換。

于 2012-10-09T09:24:49.937 に答える