C ++ Builder и Excel Automation, с чего начать? - PullRequest
3 голосов
/ 10 июня 2010

Я хочу динамически создавать и заполнять электронную таблицу Excel с помощью C ++ Builder 2009, но я не совсем уверен, как это сделать.Выполняя поиск в Интернете, я сократил использование OLE-автоматизации.Более того, я ищу документ или учебник по программированию, который поможет мне начать.Существует ли простое руководство по программированию, в котором также подробно объясняются концепции автоматизации OLE?

1 Ответ

1 голос
/ 16 июня 2010

Чтобы открыть таблицу Excel:

Variant excelApp = Unassigned;

//EOleSysError is thrown if GetActiveObject does not succeed. i.e
//if Excel is not currently open.
try
{
    excelApp = Variant::GetActiveObject("Excel.Application");
}
catch(EOleSysError& e)
{
    excelApp = Variant::CreateObject("Excel.Application"); //open excel
}

excelApp.OlePropertySet("ScreenUpdating", true);

Чтобы получить текущий указатель ячейки:

Variant excelCell = excelSheet.OlePropertyGet("Cells"); 

Чтобы добавить значения в Excel:

// create a vararray of 5 elements starting at 0
int bounds[2] = {0, 4};
Variant variantValues = VarArrayCreate(bounds, 1, varVariant);

variantValues.PutElement(5, 0);
variantValues.PutElement(5, 1);
variantValues.PutElement(5, 2);
variantValues.PutElement(5, 3);
variantValues.PutElement(5, 4);

Variant cellRange = excelCell.OlePropertyGet(
    "Range", 
    excelCell.OlePropertyGet("Item", rowindex, columnindex),  // start cell  
    excelCell.OlePropertyGet("Item", rowindex2, columnindex2) // finishing cell   
    );

// place array into excel
cellRange.OlePropertySet(
    "Value", 
    excelApp.OleFunction("Transpose", variantValues)
    );

Надеюсь, это поможет вам начать, вам, вероятно, понадобится включить vcl.h и comobj.hpp.

...