Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Отчет в Excel


Автор: ahito1 22.8.2009, 23:38
Доброго времени суток!
Самый простой экспорт данных из table я могу делать, но вот возникла необходимость заполнить уже отформатированный Excel-файл данными из базы данных. Файл в аттаче, текст, который выделен синим цветом необходимо будет заполнять из таблицы. Как это сделать?

Автор: Данкинг 22.8.2009, 23:51
А что значит "самый простой экспорт" в таком случае: куда проще-то? smile 

Код

uses comobj;
...
procedure export;
var ex:variant;
i:integer;
begin
 ex:=createoleobject('excel.application'); 
 ex.visible:=false;
 ex.DisplayAlerts:=False;
 ex.Workbooks.open('отчет.xls');
 for i:=1 to 9 do ex.activeworkbook.activesheet.cells.item[1,i].NumberFormat:='@';//если нужно
 ex.activeworkbook.activesheet.cells.item[1,1]:='24.05.2005';
 ex.activeworkbook.activesheet.cells.item[1,2]:='ВВ';
 ...
 ex.activeworkbook.activesheet.cells.item[1,9]:='Встановлено';
 ex.ActiveWorkbook.SaveAs('отчет.xls');
 ex.application.quit; 
 ex:=unassigned;

end;



Автор: Akella 23.8.2009, 00:09
А заглянуть в этот раздел,
http://forum.vingrad.ru/forum/delphi-activex-com-corba-ole.html ?????

где уже раз ..надцать твой вопрос решили, а опять же... гугл сломался что ль?

Автор: ahito1 23.8.2009, 00:09
Данкинг, самый простой это экспорт в пустой файл без выравнивания и без возможности выбирать в экселе в комбобоксе, т.е. как вы заметили там в поле РРО можно только выбрать из списка.

Автор: Akella 23.8.2009, 00:10
На тему экспорта в эксель написано примеров и статей больше, чем ты можешь себе представить. Даже есть специальный компоненты для экспорта.

Автор: ahito1 23.8.2009, 00:12
Akella, не злись, не все мы профи как ты, данкинг и остальныеsmileмы только учимсяsmile

Автор: Akella 23.8.2009, 00:12
Цитата(ahito1 @  22.8.2009,  23:38 Найти цитируемый пост)
Как это сделать? 

Тебе полностью написать код?

Добавлено через 28 секунд
Я далеко не профи, поверь. smile

Добавлено через 1 минуту и 9 секунд
Цитата(ahito1 @  23.8.2009,  00:12 Найти цитируемый пост)
мы только учимсяsmile 

Да нет, Вы, батенька не учитесь, а желаете получить готовый код smile

Добавлено через 2 минуты и 52 секунды
Давай код, покажи. Напиши, что не получается, что не можешь, где и какие ошибки при компиляции. Нормально опиши.  Я уверен, что тебе помогут. smile 

Автор: ahito1 23.8.2009, 00:18
Akella, конечно приятно сразу взять готовый код и не мучатся, но приятнее когда ты этот код сам написалsmile
Направление вы с Данкингом мне показали буду ковыряться, вопросы будут только по существуsmile

Автор: Данкинг 23.8.2009, 00:21
ahito1, используй макросы ("макрос - записать") в самом Excel и на основе их пиши код в своей программе.

Автор: ahito1 23.8.2009, 00:26
Данкинг, выдает ошибку не удалось найти файл "отчет.xls", хотя файл кинул в папку с проджектом... 

прописал полный путь теперь нет ошибки, НО никаких изменений в файле нет! Использовал код Данкинга (выше).

С макросами никогда не работал, они у меня ассоциируются с бейсиком(

Автор: Данкинг 23.8.2009, 01:25
Цитата(ahito1 @  23.8.2009,  01:26 Найти цитируемый пост)
Данкинг, выдает ошибку не удалось найти файл "отчет.xls", хотя файл кинул в папку с проджектом... 

Правильно: откуда Excel'ю знать, в какой папке лежит твой проект! smile Ты же как бы открываешь Excel и грузишь в него файл.

Цитата(ahito1 @  23.8.2009,  01:26 Найти цитируемый пост)
прописал полный путь теперь нет ошибки, НО никаких изменений в файле нет!

В ex.ActiveWorkbook.SaveAs('отчет.xls') тоже полный путь к файлу указываешь?

Цитата(ahito1 @  23.8.2009,  01:26 Найти цитируемый пост)
С макросами никогда не работал, они у меня ассоциируются с бейсиком(

В общем-то, это бейсик и есть, точнее, VBA. smile Но я же не прошу писать макросы, я просто говорю, что если ты не знаешь, как пишется та или иная инструкция для XLS (равно как и DOC), то можно "подсмотреть" её с помощью макроса, а затем адаптировать к Дельфи.

Автор: Akella 23.8.2009, 07:27
Цитата(ahito1 @  23.8.2009,  00:18 Найти цитируемый пост)
Akella, конечно приятно сразу взять готовый код и не мучатся, 

Так бери, кто ж тебе не даёт?


Думаешь мне жалко код выложить? Уже давно выложил и в разделе по экселю и в дркб тоже.  smile 

Автор: ahito1 23.8.2009, 14:27
Данкинг, спасибо, вроде разлбралсяsmile

Akella, спасибо, почитаюsmile

Автор: ahito1 24.8.2009, 21:38
а как сделать выравнивание текста в ячейке "по правому краю"?

Автор: Akella 24.8.2009, 22:22
а зачем жырным? мы не слепые

Добавлено через 1 минуту и 2 секунды
Ты читал закреплённые темы в этом разделе?
http://forum.vingrad.ru/forum/delphi-activex-com-corba-ole.html

Добавлено через 2 минуты и 5 секунд
и вообще, ты хоть раз заглядывал в тот раздел? там ответ лежит на поверхности

Добавлено через 5 минут и 19 секунд
http://forum.vingrad.ru/index.php?showtopic=84634&view=findpost&p=651633

Автор: Данкинг 24.8.2009, 22:30
По центру - 
Код

ex.activesheet.Cells[1,1].HorizontalAlignment := 3;

А по правому краю - не знаю, сам ищи. smile 

Автор: Akella 24.8.2009, 22:47
Данкинг, есть же константы, и ты туда же О_о

Автор: Данкинг 24.8.2009, 23:17
Цитата(Akella @  24.8.2009,  23:47 Найти цитируемый пост)
Данкинг, есть же константы, и ты туда же О_о 

Ну да, и правда есть. smile Но я всегда так вот прописывал. smile 

Автор: ahito1 25.8.2009, 14:44
Akella, Спасибо


Данкинг, Спасибо, тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)