![]() |
|
#1
|
|||
|
|||
![]() ребят, пожалуйста не ругайтесь, наверняка 100 раз тут обсуждали, но я не могу найти...
Мне нужно узнать как связать Delphi с Excel'ем. От начала и до конца. Какие компоненты использовать и какой код для связи писать. Суть такая - у меня есть экселевский документ, в котором я писал макросы по обработке информации. Мне нужно, чтобы все эти операции делались в дельфи, желательно с отчетами. В дельфи я почти полный ноль (какие-то рисовалки делал и все). на форуме я нашел много о связи экселя и дельфи, но там уже выясняются дальнейшие вопросы, мне же самое начало нужно. На всякий случай выкладываю архив с xls доками (основной файл - бонус, он обрабатывает остальные). Надеюсь на любую помощь! Спасибо! И еще одна просьба - дайте пожалуйста ссылку на материал, посвященный работе в Delphi с базами данных Access. Мне нужны именно азы, ничего мудреного. Еще раз спасибо! Последний раз редактировалось niqx, 10.05.2008 в 12:52. |
#2
|
|||
|
|||
![]() Там выложен пример чтения данных из Excel.
http://www.delphisources.ru/forum/sh...2&postcount=13 А по созданию БД Access просто и понятно изложено в главе 14 книги Фленова Михаила "Библия Delphi". Найти ее в электронном виде не сложно. Последний раз редактировалось MegaPiha, 10.05.2008 в 14:01. |
#3
|
|||
|
|||
![]() 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
|
|||
|
|||
![]() Блин, спасибо, но там все не для меня написано... Слишком сложно. Объясните плиз на пальцах с чего начать. Просто чтоб экселевская таблица отображалась в форме и выполняля макросы (если можно
![]() |
#5
|
|||
|
|||
![]() Мил друг, ну пойми ты, ничего просто так не бывает.
Delphi работает с Excel через OLE и "просто" чтобы экселевская таблица отображалась в форме и речи быть не может. Это может произойти только после долгого и кропотливого изучения материала. Никто (практически) не пытается отобразить экеселевскую таблицу в форме. Проще вызвать Excel и там делать чего надо. Если слишком сложно, то лучше преквалифицироваться в дворники. Материала в приведенных ссылках с лихвой для того чтобы этому Excel'ю выкрутить руки и делать с ним чего хочешь. Беда твоя, что ничего не делая хочется многого. |
#6
|
|||
|
|||
![]() Во-первых, затащить Эксель на форму не так уж и сложно.
Во-вторых, у DevExpress'а есть компонент, по функционалу аналогичный табличке Экскля (работают ли там макросы - не знаю, не надо было). В-третьих, еще есть замечательная штука XLSReadWriterII, которая позволяет ковыряться в файликах Экселя без вызова оного. Вот. |
#7
|
|||
|
|||
![]() Спасибо! Тогда еще подскажите плиз какой строчкой кода открыть нужный документ экселя? (Да, вот такие мы, экономисты, ламеры
![]() |
#8
|
||||
|
||||
![]() 2 lmikle, а где можно достать сей замечательную штуку как XLSReadWriterII?. А то перерыл весь (или пол-) Инет и толко нашёл ссылки на форум или к китайцам... А я китайский ни гу-гу.
Хорошо написанная программа не требует документации ICQ 9-184-668. |
#9
|
|||
|
|||
![]() И все-таки очень хотелось бы узнать ответ на прошлый мой пост пожалуйста... Можно с добавлением - "... и отвали наконец, кусок идиота!"
![]() |
#10
|
|||
|
|||
![]() Цитата:
Ну я последний раз качал с www.prolaz-team.info |
#11
|
|||
|
|||
![]() Цитата:
Честно говоря, я бы делал всю математику в Delphi, бо как всяко быстрее работает, а потом, если надо, готовые данные экспортировал бы в Excel. У меня есть под рукой пример для Ворда, в принципе, там все аналогично с Экселем (сорри, сейчас писать пример для Экселя некогда). |
#12
|
||||
|
||||
![]() может помогут.. немного методов (как чайник чайнику покажу немного
![]() 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
|
|||
|
|||
![]() Чтобы все это работало добавляем в Uses библиотеку ComObj
![]() |
#14
|
|||
|
|||
![]() Спасибо! Но как сделать, чтобы книга открывалась и выводилась на экран? Вышеописанным способом все работает, но на экран ничего не выводится...
|
#15
|
||||
|
||||
![]() "Живой" пример отправки данных в 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. |