C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MSExecl2000 vs BCB5.0 — Как выполнить формулу?
Shutoff
  Отправлено: 23.05.2003, 15:18


Не зарегистрирован







Приветствую!
Ощущаю, что вопрос задаю старый, но...
Как после изменения данных в ячейках, связанных с формулой, заставить Excel вернуть пересчитанное значение ячейки с формулой?
Напр:
В С12 записано след:
=РАЗНДАТ(КОНМЕСЯЦА(C1;0);КОНМЕСЯЦА(C2;0);"M")
После записи из билдера в С1 и С2 новых значений, при попытке прочитать Value из С12 получаю #ИМЯ-тра-ля-ля...Т.е., как бы заставить его надо CalculateFull сделать, но и это не помогает sad.gif

Уж не знаю, что и делать... sad.gif
Admin
Отправлено: 27.05.2003, 18:18


Владимир

Группа: Администратор
Сообщений: 1190



Можно скачать пример с сайта добавить на форму Button1, Label3, Label4
в .h файл описание функций
private:
Variant __fastcall fromExcelCell(int Row, int Column);
Variant __fastcall fromExcelFormula(int Row, int Column);

и в .cpp следующий код:

CODE

//---------------------------------------------------------------------------
// получить значение ячейки
Variant __fastcall TForm1::fromExcelCell(int Row, int Column)
{
try{
Variant result,cur;
cur = Sh.OlePropertyGet("Cells",Row,Column);
result = cur.OlePropertyGet("Value");
return result;
}catch(...) {;}
}
//-------------------

// получить формулу из ячейки
Variant __fastcall TForm1::fromExcelFormula(int Row, int Column)
{
try{
Variant result,cur;
cur = Sh.OlePropertyGet("Cells",Row,Column);
result = cur.OlePropertyGet("Formula");
return result;
}catch(...) {;}
}
//-------------------
// получаем значение и формулу из ячейки 34,5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label3->Caption = fromExcelCell(34,5);
Label4->Caption = fromExcelFormula(34,5);
}
//---------------------------------------------------------------------------


Тогда в Label3->Caption Вы получите значение,
а в Label4->Caption получите формулу в указанной ячейке.

Отредактировано Admin — 27 May 2003, 18:21
Гость_Shutoff
  Отправлено: 28.05.2003, 08:55


Не зарегистрирован







Скачать-то можно, но...как мне сказали, проблема в самой ф-ии OleProperty... и работой борланда с русскими локалями. Вот этот ответ меня и интересуте — что и где поправить?
Admin
Отправлено: 28.05.2003, 15:28


Владимир

Группа: Администратор
Сообщений: 1190



Так вы попробуйте, работает у Вас или нет ?
Например у меня работает.

Если у Вас нет — приведите код на C++Builder где не работает

Отредактировано Admin — 28 May 2003, 15:30

Вернуться в Вопросы программирования в C++Builder