imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 06.04.2004, 22:14     # 1
PLP
Junior Member
 
Регистрация: 16.07.2002
Сообщения: 113

PLP Путь к славе только начался
Экспорт отчетов из Access в Excel

Приветствую. Появилась необходимость экспортировать готовые отчеты из Access в Excel. подскажите как это можно сделать? Может быть не напрямую, если нельзя, а через таблицы? Заранее благодарен.
PLP вне форума  
Старый 07.04.2004, 00:48     # 2
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
Если Delphi или Builder, то пользуй технологию ADO - Быстро и просто.

Для Delphi:

procedure TMainForm.ExcelExportTBClick(Sender: TObject); //жмем на кнопку
var
XLApp,Sheet,Colum:Variant;
index,i,j:Integer;
begin
XLApp:= CreateOleObject('Excel.Application'); // создаем ексельник рантайм
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167); // смотри ExcelXP.pas
XLApp.Workbooks[1].WorkSheets[1].Name:='Название листа'; // название листа Excel
Colum:=XLApp.Workbooks[1].WorkSheets['Название листа'].Columns; //засовываем в переменную указатель на столбцы
for i:=0 to WorkersGrid.FieldCount-1 do // есть ADO таблица, заполняемая по запросу, проходим до кол-ва записей - 1
Colum.Columns[i+1].ColumnWidth:=WorkersGrid.Fields[i].DisplayWidth; // делаем столбцы
нужной ширины
Colum:=XLApp.Workbooks[1].WorkSheets['Название листа'].Rows; //засовываем в переменную указатель на строки
Colum.Rows[2].Font.Bold:=true; // во второй строке шрифт - жирный
Colum.Rows[1].Font.Bold:=true; // аналогично в первой
Colum.Rows[1].Font.Color:=clBlue; // в первой строке цвет шрифта - синий
Colum.Rows[1].Font.Size:=14; // в первой строке размер шрифта - 14
Sheet:=XLApp.Workbooks[1].WorkSheets['Название листа']; // засовываем в переменную указатель на страницу (лист)
Sheet.Cells[1,1]:='Че-нибудь'; //пишем в первую ячейку
Sheet.Cells[1,2]:='от '+DateToStr(Date); //пишем во второй столбец первой строки сегодняшнее число
for i:=0 to WorkersGrid.FieldCount-1 do //снова ADO проходим до количества записей
begin
Sheet.Cells[2,i+1].Borders.LineStyle:=$00000001; //т.к. в Excel нумерация с 1, а в Delphi с 0, то цикл соответственно... делаем рамку вокруг ячейки.
Sheet.Cells[2,i+1].Borders.Weight:=3; // ЖИРНУЮ!!
Sheet.Cells[2,i+1]:=WorkersGrid.Fields[i].DisplayName; //Пишем в ячейку данные
end;
DM.WorkersQ.First; //встаем на голову в ADO
index:=3; // третья строка
for i:=0 to DM.WorkersQ.RecordCount-1 do // снова в те же ворота
begin
for j:=0 to WorkersGrid.FieldCount-1 do // смотрим кол-во столбцов - опять - двадцать пять
begin
Sheet.Cells[index,j+1].Borders.LineStyle:=$00000001; // прямая линия (рамка)
Sheet.Cells[index,j+1]:=WorkersGrid.Fields[j].AsString; //вносим данные
end;
Inc(index); //соответственно инкремент (увеличение)
DM.WorkersQ.Next; //переходим на следующую запись в ADO
end;

Пример не претендует на изящность, зато все понятно, ну для тех кто понимает в Delphi или в Buildere,....

Нужно подключить модули OleServer и ComObj.


Вопрос к знатокам!! (в частности к RaZEr-у )
Просмотрел весь PAS-ник (ExcelXP.PAS), не нашел, где включатются колнтитулы. (хочу нумерацию страниц привыгрузке включить).
Не подскажете?

Добавлено через 4 минуты:
А что значит отчеты? Я тут задумался. )
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах

Последний раз редактировалось /7y3uK; 07.04.2004 в 00:46.
/7y3uK вне форума  
Старый 09.04.2004, 17:39     # 3
woo
Flasher
 
Регистрация: 04.11.2003
Адрес: Питер
Сообщения: 76

woo Известность не заставит себя ждать
Есть стандартная операция...
Сервис - Связи с Office - Анализ в Microsoft Excel
woo вне форума  

Опции темы

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

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:04.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.