online jpg importar imagen htm gratis embebido editable datos convertir c++ excel automation ole

c++ - jpg - htm a excel



exportar archivos HTML con imágenes a Excel solo archivo XLS? (1)

Estoy intentando exportar archivos HTML con imágenes a Excel usando la automatización OLE de C ++.

Muestra de código:

#import "//alpha/sdk/mso/office12/mso.dll" rename( "RGB", "MSORGB" ) rename("DocumentProperties", "MSODocumentProperties") rename("SearchPath", "MSOSearchPath") using namespace Office; #import "//alpha/sdk/mso/office12/VBE6EXT.OLB" rename( "RGB", "MSORGB" ) rename("EOF", "EndOfFile") using namespace VBIDE; #import "//alpha/sdk/mso/office12/excel.exe" rename( "DialogBox", "ExcelDialogBox" ) rename( "RGB", "ExcelRGB" ) rename( "CopyFile", "ExcelCopyFile" ) rename( "ReplaceText", "ExcelReplaceText" ) no_auto_exclude #import "//alpha/sdk/mso/office12/msword.olb" rename( "DialogBox", "WordDialogBox" ) rename( "RGB", "WordRGB" ) rename( "CopyFile", "WordCopyFile" ) rename( "ReplaceText", "WordReplaceText" ) rename( "ExitWindows", "WordExitWindows" ) rename( "FindText", "WordFindText" ) no_auto_exclude // Create Excle application OLE obj... Excel::_ApplicationPtr pApplication; HRESULT hRes = pApplication.CreateInstance(_T("Excel.Application")); if (hRes==S_OK) { pApplication->PutDisplayAlerts(MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL), SORT_DEFAULT), VARIANT_FALSE); pApplication->PutCopyObjectsWithCells(MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL), SORT_DEFAULT), VARIANT_TRUE); // Open prepeared for export HTML file Excel::_WorkbookPtr pBook = pApplication->Workbooks->Open( _bstr_t(szHTMLPath), _variant_t((long)Excel::xlUpdateLinksAlways), vtMissing, vtMissing/*_variant_t((long)Excel::xlHtml)*/ ); if (pBook!=NULL) { //Save opened HTML file as XSL file hRes = pBook->SaveAs(_bstr_t(szXLSPath), _variant_t((long)Excel::xlWorkbookNormal), vtMissing, vtMissing, vtMissing, vtMissing, Excel::xlNoChange, _variant_t((long)Excel::xlLocalSessionChanges), _variant_t(false)); if (hRes==S_OK) { // All is ok } pBook->Close(); } pApplication->Quit(); }

Lamentablemente, las imágenes img del código html no se convierten en una imagen incrustada , sino en las imágenes vinculadas externas . ¿Cómo convierto imágenes para almacenarlas internamente en el archivo XLS como un objeto incrustado?


Breve charla en un foro de Microsoft permitió formar un código más o menos funcional.

Excel::ShapesPtr pShapes = Excel::_WorksheetPtr(pBook->Worksheets->Item[1])->Shapes; for (long nIndex=1; nIndex<=pShapes->GetCount(); nIndex++) { Excel::ShapePtr pShape = pShapes->Item(nIndex); const Office::MsoShapeType nType = pShape->Type; switch (nType) { case Office::msoLinkedPicture: { const float rLeft = pShape->Left; const float rTop = pShape->Top; const float rWidth = pShape->Width; const float rHeight = pShape->Height; const _bstr_t szPath = pShape->AlternativeText; Excel::ShapePtr pNewShape = pShapes->AddPicture(szPath, Office::msoFalse, Office::msoTrue, rLeft, rTop, rWidth, rHeight); if (pNewShape) { pShape->Delete(); nIndex = 0; } } break; } }