Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Создание массива из Excel изпользуя ole


Автор: Damp1L 6.2.2007, 08:03
Вот код который использую:
Код

AnsiString file=GetCurrentDir();
 AnsiString file=file+"\\123.xls";
    String col="A";
AnsiString cols[100];
    Variant App=Variant::CreateObject("Excel.application");
    Variant Books=App.OlePropertyGet("Workbooks");
    Procedure Open("Open");
    Books.Exec(Open<<file);
    Variant Book=App.OlePropertyGet("ActiveWorkBook");
    Variant sheet=Book.OlePropertyGet("ActiveSheet");
    PropertyGet Range("Range");
for (int i=1; i<10; i++)
{
    Variant range=sheet.Exec(Range<<Variant(col+i));
    //val - значение ячейки 
   cols[i]=range.OlePropertyGet("Value");
}

Если я беру 1 значение, то всё ок. А вот если ставлю этот цикл он вот что мне пишет:
Цитата
Could not convert variant of type (Array Variant) into type (String)

Может кто подсказать в чём трабла ?

Автор: Rodman 6.2.2007, 11:47
Damp1L, http://rxlib.ru/WinLesson/bles1.htm 

Автор: nworm 6.2.2007, 12:04
Ну делай через ячейки.

Код

cols[i]=sheet.OlePropertyGet("Cells",i,"A").OlePropertyGet("Value");


А иногда, лучше вначале в режиме автосоставлений составлять макрос в Excel, а затем переводить этот макрос на C++. Так ошибок получается меньше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)