![]() |
|
|
#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?. А то перерыл весь (или пол-) Инет и толко нашёл ссылки на форум или к китайцам... А я китайский ни гу-гу.
|
|
#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;
|