Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 01:15   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
Вопрос Как пересчитать имеющиеся в Excel формулы по введёным из Delphi значениям?

Здравствуйте.
Проблемка вот какая: есть Excel-шаблон с пустыми строками и формулой, делающей расчёт по значениям этих строк.
Когда вставляю программно значеня в ячейку - они воспринимаются как "текстовые" (наверное) и не считаются, пока не войду в ручную в редактирование ячейки (аналог F2)...
В чём проблема?
Пробовал и
Код:
Sheet.Range[Sheet.Cells.Item[DataArray.Top,DataArray.Left],Sheet.Cells.Item[DataArray.Bottom,DataArray.Right]].Value := TabGrid;
и
Код:
Sheet.Range[Sheet.Cells.Item[DataArray.Top,DataArray.Left],Sheet.Cells.Item[DataArray.Bottom,DataArray.Right]].Formula := TabGrid;
и
Код:
Sheet.Range[Sheet.Cells.Item[DataArray.Top,DataArray.Left],Sheet.Cells.Item[DataArray.Bottom,DataArray.Right]].Calculate;
Всё одинаково....
Ship_1 вне форума Ответить с цитированием
Старый 08.03.2014, 02:25   #2
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

Что ж, "граждане алкоголики, тунеядцы, бездельники" © ... Видимо, не простой для всех была задачка. На данный момент я нашёл только такое, поячеечное, решение:
Код:
Sheet.Range[ItoS(DataArray.Left+X,DataArray.Top+Y), EmptyParam].Value[$0000000A] := StrToFloat(DataTable.Cells[X+1,Y+1]);
Может, кстати, знает кто остальные константы и их значения для объявления типа данных в ячейке?
Ship_1 вне форума Ответить с цитированием
Старый 08.03.2014, 13:13   #3
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от Ship_1 Посмотреть сообщение
Когда вставляю программно значеня в ячейку - они воспринимаются как "текстовые" (наверное).
Для того что бы записывать числовые значения делайте так(пример из книги):
Код:
Range.Value:= StrToCurr(value1.Text);
kta87 вне форума Ответить с цитированием
Старый 08.03.2014, 15:59   #4
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

О! Тоже сработало!
В моём случае
Код:
Sheet.Range[ItoS(DataArray.Left+X,DataArray.Top+Y), EmptyParam].Value:= StrToCurr(DataTable.Cells[X+1,Y+1]);
А что за книга, кто автор, как называется?
Ship_1 вне форума Ответить с цитированием
Старый 08.03.2014, 16:08   #5
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Корняков В.Н. - Программирование документов и приложений MS Office в Delphi
kta87 вне форума Ответить с цитированием
Старый 12.03.2014, 19:14   #6
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

kta87: Хм... StrToCurr почему-то стало выводить значения в формате "дата"... Пришлось вернуться к предыдущему, т.к. пока сбоев не замечено...
К слову: посмотрел книгу, но перечисления констант не увидел...
Ship_1 вне форума Ответить с цитированием
Старый 22.03.2014, 08:35   #7
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Константы искать нужно в модулях для работы с MS Office (Word2010.pas, Excel2010.pas и т.д.)
P.S. В зависимости от версии IDE название файлов могут меняться, например Word200.pas или WordXP.pas
kta87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод Excel формулы в Delphi Artsiom Помощь студентам 1 09.09.2012 22:25
Не работают формулы в Excel при заполнении данных из Delphi ZHDN Общие вопросы Delphi 1 30.07.2011 13:17
как пересчитать ячейки стринггрида TotKtoNado БД в Delphi 7 17.04.2011 14:37
Delphi 2010 пересчитать все формы проекта программно. Человек_Борща Общие вопросы Delphi 6 13.04.2011 22:39
Как вытащить формулы из Excel программки? Arkuz Microsoft Office Excel 7 16.11.2010 02:14