Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2008, 11:44
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию Связь с Excel

ребят, пожалуйста не ругайтесь, наверняка 100 раз тут обсуждали, но я не могу найти...
Мне нужно узнать как связать Delphi с Excel'ем. От начала и до конца. Какие компоненты использовать и какой код для связи писать.
Суть такая - у меня есть экселевский документ, в котором я писал макросы по обработке информации. Мне нужно, чтобы все эти операции делались в дельфи, желательно с отчетами. В дельфи я почти полный ноль (какие-то рисовалки делал и все). на форуме я нашел много о связи экселя и дельфи, но там уже выясняются дальнейшие вопросы, мне же самое начало нужно. На всякий случай выкладываю архив с xls доками (основной файл - бонус, он обрабатывает остальные).
Надеюсь на любую помощь!
Спасибо!

И еще одна просьба - дайте пожалуйста ссылку на материал, посвященный работе в Delphi с базами данных Access. Мне нужны именно азы, ничего мудреного. Еще раз спасибо!
Вложения
Тип файла: zip Бонус.zip (16.6 Кбайт, 40 просмотров)

Последний раз редактировалось niqx, 10.05.2008 в 12:52.
Ответить с цитированием
  #2  
Старый 10.05.2008, 13:59
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Там выложен пример чтения данных из Excel.
http://www.delphisources.ru/forum/sh...2&postcount=13

А по созданию БД Access просто и понятно изложено в главе 14 книги Фленова Михаила "Библия Delphi". Найти ее в электронном виде не сложно.

Последний раз редактировалось MegaPiha, 10.05.2008 в 14:01.
Ответить с цитированием
  #3  
Старый 10.05.2008, 14:02
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

http://www.delphikingdom.com/asp/ite...ode=1&ItemID=2
Статьи про работу с Excel из Delphi.

http://www.delphikingdom.com/asp/itemq.asp?ItemID=2
И более 1500 вопросов с ответами по работе с Excel.

Последний раз редактировалось san-46, 10.05.2008 в 14:07.
Ответить с цитированием
  #4  
Старый 10.05.2008, 14:29
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Блин, спасибо, но там все не для меня написано... Слишком сложно. Объясните плиз на пальцах с чего начать. Просто чтоб экселевская таблица отображалась в форме и выполняля макросы (если можно ). Что разместить на форме и какие параметры этим компонентам задать. Какой примерный код нужно написать?
Ответить с цитированием
  #5  
Старый 10.05.2008, 19:07
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Мил друг, ну пойми ты, ничего просто так не бывает.
Delphi работает с Excel через OLE и "просто" чтобы экселевская таблица отображалась в форме и речи быть не может. Это может произойти только после долгого и кропотливого изучения материала. Никто (практически) не пытается отобразить экеселевскую таблицу в форме.
Проще вызвать Excel и там делать чего надо.
Если слишком сложно, то лучше преквалифицироваться в дворники.
Материала в приведенных ссылках с лихвой для того чтобы этому Excel'ю выкрутить руки и делать с ним чего хочешь.
Беда твоя, что ничего не делая хочется многого.
Ответить с цитированием
  #6  
Старый 11.05.2008, 02:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Во-первых, затащить Эксель на форму не так уж и сложно.
Во-вторых, у DevExpress'а есть компонент, по функционалу аналогичный табличке Экскля (работают ли там макросы - не знаю, не надо было).
В-третьих, еще есть замечательная штука XLSReadWriterII, которая позволяет ковыряться в файликах Экселя без вызова оного.

Вот.
Ответить с цитированием
  #7  
Старый 11.05.2008, 16:03
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо! Тогда еще подскажите плиз какой строчкой кода открыть нужный документ экселя? (Да, вот такие мы, экономисты, ламеры )...
Ответить с цитированием
  #8  
Старый 11.05.2008, 16:58
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

2 lmikle, а где можно достать сей замечательную штуку как XLSReadWriterII?. А то перерыл весь (или пол-) Инет и толко нашёл ссылки на форум или к китайцам... А я китайский ни гу-гу.
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #9  
Старый 13.05.2008, 15:36
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

И все-таки очень хотелось бы узнать ответ на прошлый мой пост пожалуйста... Можно с добавлением - "... и отвали наконец, кусок идиота!"
Ответить с цитированием
  #10  
Старый 13.05.2008, 17:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Thrasher
2 lmikle, а где можно достать сей замечательную штуку как XLSReadWriterII?. А то перерыл весь (или пол-) Инет и толко нашёл ссылки на форум или к китайцам... А я китайский ни гу-гу.

Ну я последний раз качал с www.prolaz-team.info
Ответить с цитированием
  #11  
Старый 13.05.2008, 17:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от niqx
И все-таки очень хотелось бы узнать ответ на прошлый мой пост пожалуйста... Можно с добавлением - "... и отвали наконец, кусок идиота!"

Честно говоря, я бы делал всю математику в Delphi, бо как всяко быстрее работает, а потом, если надо, готовые данные экспортировал бы в Excel.

У меня есть под рукой пример для Ворда, в принципе, там все аналогично с Экселем (сорри, сейчас писать пример для Экселя некогда).
Ответить с цитированием
  #12  
Старый 13.05.2008, 19:54
Аватар для SedmoiDemon
SedmoiDemon SedmoiDemon вне форума
Прохожий
 
Регистрация: 11.05.2008
Сообщения: 14
Репутация: 10
По умолчанию

может помогут.. немного методов (как чайник чайнику покажу немного ):
var
MyExcel: Variant;
begin
MyExcel:=CreateOleObject('Excel.Application');//создание объекта в программе
MyExcel.workbooks.open('полный путь к файлу и название его.xls');//открытие файла
myexcel.worksheets.count - кол-во листов в книге(integer)
myexcel.worksheets[номер листа].name - название листа(string)
myexcel.worksheets[l].range[имя яйчейки(прм.'A1')] - значение яйчейки(variant)
MyExcel.workbooks.close;//закрытие книги в экселе
varclear(myexcel);//очистка памяти от объекта
end;//конец
тип Variant в String - функция VarToStr
__________________
Как тьма ищет без солнца свет,
Так свет ищет без мрака тьму...
Как жаль, что весь этот бред
Понятен лишь мне одному...
Ответить с цитированием
  #13  
Старый 13.05.2008, 20:17
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Чтобы все это работало добавляем в Uses библиотеку ComObj
Ответить с цитированием
  #14  
Старый 14.05.2008, 07:40
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо! Но как сделать, чтобы книга открывалась и выводилась на экран? Вышеописанным способом все работает, но на экран ничего не выводится...
Ответить с цитированием
  #15  
Старый 14.05.2008, 10:17
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

"Живой" пример отправки данных в Excel
Код:
procedure TCalibrateForm.Button1Click(Sender: TObject);
var
XLApp,Sheet,Colum:Variant;
index,i:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[1].Name:='Таблица';
Colum:=XLApp.Workbooks[1].WorkSheets['Таблица'].Columns;
Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Colum:=XLApp.Workbooks[1].WorkSheets['Таблица'].Rows;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=clBlue;
Colum.Rows[1].Font.Size:=14;
Sheet:=XLApp.Workbooks[1].WorkSheets['Таблица'];
Sheet.Cells[1,1]:='Калибровочная таблица';
Colum.Rows[3].Font.Bold:=true;
Colum.Rows[3].Font.Color:=clRed;
Colum.Rows[3].Font.Size:=13;
Colum.Rows[4].Font.Bold:=true;
Colum.Rows[4].Font.Color:=clRed;
Colum.Rows[4].Font.Size:=13;

Sheet.Cells[3,1]:='Диаметр трубопровода '+FloatToStr(Round(D*1000+2*Th))+'x'+FloatToStrF(Th,ffFixed,3,1);
Sheet.Cells[4,1]:='Длина трубопровода '+FloatToStrF(L,ffFixed,10,3)+' м';

Sheet.Cells[6,1]:='Уровень,мм';
Sheet.Cells[6,2]:='Объем, куб.м';

index:=7;
For I:=1 to CalibrateGrid.RowCount-1 do
begin
Sheet.Cells[index,1]:=StrToFloat(CalibrateGrid.Cells[0,I]);
Sheet.Cells[index,2]:=StrToFloat(CalibrateGrid.Cells[1,I]);
Inc(Index);
end;
end;
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025