Как загрузить файл данных в документ Automated Excel Sheet?

У меня есть проект MFC / C ++, который использует подход ActiveX Document (Automation) для открытия встроенного объекта Excel Sheet. К сожалению, в Excel.Sheet obj API нет методов для загрузки данных из предварительно подготовленного файла htm / cvs. Итак, я не могу загрузить подготовленные данные. Единственный объект, способный загружать данные из файла, — это «Рабочие книги» (метод Open (…)), но он всегда создает новый объект Sheet и не использует существующий. Все примеры использования встроенного документа Excel.Sheet предлагают заполнить ячейку таблицы «вручную», и никто не показывает, как открыть в ней существующий файл.

Итак, как загрузить файл данных html / cvs в документ Automated Excel Sheet?

0

Решение

Вы можете встраивать любые файлы (любых типов) в лист Excel, используя OleObjects. Это пример кода для прикрепления файла:

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 ++) вы можете найти в этой статье.

1

Другие решения

Как выяснилось, нет способа создания ActiveX Excel Sheet Document, инициализированный по формату файла, не совпадающий с xls / xlsx. Сначала необходимо преобразовать формат html в xls / xlsx, а затем открыть его через стандартный OLE API (OleCreateFromFile).
Конверсия, которую я описал в ссылке.

0