Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] перекинуть данные из Excel в прогу на Delphi

Ответить
Настройки темы
Delphi - [решено] перекинуть данные из Excel в прогу на Delphi

Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Изменения
Автор: anatoly_neo
Дата: 18-04-2011
Изображения
Тип файла: jpg проект.jpg
(187.8 Kb, 17 просмотров)
Вложения
Тип файла: xls Пример.xls
(15.5 Kb, 20 просмотров)
Привет всем.
Помогите решить задачку. Есть файл эксель, содержит в себе данные в трёх столбцах (пример приложен) и примерно 25 строчках, на одном листе. Надо из него подгрузить эти данные в программу на Delphi в модуль StringGrid.
На скрине зафиксировал то чего уже удалось добиться в графическом виде, с кодом пока значительно сложнее, посему и прошу вашей помощи. Хотелось бы чтобы поподробнее объяснили, что к чему, зачем и почему.
Спасибо.

PS: хотелось бы сразу добавить небольшое усложнение задачи, сделать так чтобы программа в зависимости от времени суток выводила только нужные строки. То есть, в первом столбце таблицы Excel у нас будет время (в формате HH:MM), вот надо чтобы прога выводила например строки с временем с 9:00 до 15:00 именно в это время суток, следующую часть строк (с 15:00 до 21:00) она уже выводила именно с 15 до 21 часа.

Отправлено: 16:56, 18-04-2011

 

Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата anatoly_neo:
так он заполняет табличку, но не с самой верхней строки, а со второй, подскажите куда рыть? »
кажется сам понял, первая ячейка не доступна для изменения

Отправлено: 15:06, 21-04-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


если j у Вас это столбцы, то почему длина цикла такая же как и у i, до RowsCount?
Цитата anatoly_neo:
но не с самой верхней строки, а со второй »
Из Excel берет со второй. или вставляет в StringGrid со второй?

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 15:08, 21-04-2011 | #12


Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
Из Excel берет со второй. или вставляет в StringGrid со второй? »
В StringGrid вставляет со второй

Цитата LilLoco:
если j у Вас это столбцы, то почему длина цикла такая же как и у i, до RowsCount? »
тормоз, поправлю

Отправлено: 15:25, 21-04-2011 | #13


Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Осталось наверно самое сложное, заставить эту прогу выводить строки соответственно времени, то есть, строки со временем 9:00 до 12:00 показывать в это время, остальные где то хранить (или в 12:00 обновляться и искать строки с 12:00 до 15:00) и выводить их в нужное время.

как бы вот с этой задачей разобраться?

Отправлено: 16:03, 21-04-2011 | #14


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата anatoly_neo:
обновляться и искать строки »
Обновляться должно автоматически или опять же по нажатии на кнопку вручную?

Тут уже Вам не обойтись тем циклом который Вы представили! Можно конечно сначала добавить все строки, потом циклом пройтись по StringGrid и удалить те, которые не соответствуют времени!
Либо же, проверять это перед заполнением! И добавлять уже, только те которые нужны!
Например можно так :

Код: Выделить весь код
time : string;
hour : int;
for i := первая строка to последняя строка do
begin
Time = excel.Cells[столбец времени, i].Value;
hour = ИзвлечьВремяИзСтроки(Time);
if тут выполняется проверка времени
begin
и если выполняется выводим в stringgrid
end;
end;
ИзвлечьВремяИзСтроки(Time) - функция которая из строки времени получает часы!

Ну вот как нибудь так можно это реализовать!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:21, 21-04-2011 | #15


Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
Обновляться должно автоматически или опять же по нажатии на кнопку вручную? »
хотелось бы чтобы автоматически все обновлялось, как раз в "крайние" моменты времени (12:00, 15:00, 18:00).


PS: еще маленький вопросик, а уже заполненную StringGrid в одной форме, можно как то передать на другую форму (либо саму табличку, либо данные из неё), которая в итоге будет результирующей? объясню для чего это, первая форма это как бы черновик, в котором мы заполняем и проверяем все данные, а вторая форма как чистовик, на которую по нажатию кнопки "поехали" (в первой форме) перебрасываются все данные и выводятся на экран.

Последний раз редактировалось anatoly_neo, 21-04-2011 в 17:10.


Отправлено: 16:44, 21-04-2011 | #16


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата anatoly_neo:
перебрасываются все данные »
Пройдитесь циклом по StringGrid черновика, и перекиньте все данные в StringGrid чистовика!

Цитата anatoly_neo:
хотелось бы чтобы автоматически все обновлялось, как раз в "крайние" моменты времени (12:00, 15:00, 18:00). »
Воспользуйтесь таймером, и на событие "тика" поставьте функция считывания из Excel в StringGrid!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 20:42, 21-04-2011 | #17


Пользователь


Сообщения: 121
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата LilLoco:
LilLoco »
ОК. будем пробовать

PS: Огромное спасибо за помощь

Последний раз редактировалось anatoly_neo, 22-04-2011 в 11:19.


Отправлено: 09:51, 22-04-2011 | #18


Аватара для Хоф

Пользователь


Сообщения: 105
Благодарности: 10

Профиль | Отправить PM | Цитировать


LilLoco,
Цитата LilLoco:
ИМХО, создается просто ссылка на объект, так как сам excel во время работы запускается в фоновом режиме, »
скажите
Цитата LilLoco:
excel := CreateOleObject('Excel.Application') »
я могу с помощью этого текста (заменив Exel на любую другую нужную мне программу) запустить допустим из того же VBA в Exel в фоновом режиме Adobe Reader, или Corel Draw, или OpenOffice Calc, чтоб считать данные из ячеек в Calc или из "рисованных" таблиц в Adobe reader или Corel Draw и перенести их в Exel ?
И где про это - состыковка двух разных программ из под VBA в Exel для переброса данных - можно прочитать по подробнее?

-------
коллекционирую выдвижные столики..... для кофе.


Отправлено: 12:07, 22-04-2011 | #19


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Так, если я правильно понял, то,
Технология OLE позволяет работать с программами разработанными Только компанией Microsoft.
Соответственно, невозможно так работать с любой программой!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:42, 22-04-2011 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] перекинуть данные из Excel в прогу на Delphi

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
как перекинуть все данные с одного компа на другой Pavelasd Хочу все знать 9 27-06-2011 06:32
CMD/BAT - [решено] Как внести данные в реестр из батника без подтверждения запроса и запустить прогу? Nun-Nun Скриптовые языки администрирования Windows 3 11-05-2011 11:41
Как из сим карты перекинуть данные старые в новый телефон? micro8 Мобильные ОС, смартфоны и планшеты 4 27-09-2010 18:48
2007 - Excel | Не отображаются данные devilless Microsoft Office (Word, Excel, Outlook и т.д.) 0 08-07-2010 09:49
Delphi - Delphi: как закрыть чужую прогу pvr30 Программирование и базы данных 13 06-08-2003 19:15




 
Переход