Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2015, 09:54   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Вывести из базы данных в Excel

Подскажите пожалуйста, как вывести из базы данных Access в Excell только несколько столбцов таблицы?
Dux вне форума Ответить с цитированием
Старый 11.07.2015, 10:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну... Самое лучшее - в Экзеле настроить импорт внешних источников, в котором указать запрос на нужные столбцы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.07.2015, 12:22   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
только несколько столбцов таблицы?
Пример из книг "Флёнов М.Е. - Библия Delphi" Я там добавил
1) oldcur : TCursor;
2) bm : TBookmark;
3) выравнивать текст по центру
каждое столбцов экспортируется отдельно
Код:
procedure TfrmXD.ExcelExport;   
var
  XLapp, Sheet, Colum:Variant;
  index,i:Integer;
  oldcur : TCursor; // курсор
  bm : TBookmark;
begin
  oldcur := screen.Cursor; //
  screen.Cursor:=crHourGlass; //
  bm := qryXD.GetBookmark;
  qryXD.DisableControls;
  try
     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:= 25;
     Colum.Columns[3].ColumnWidth:= 25;
     Colum.Columns[4].ColumnWidth:= 25;
     Colum.Columns[5].ColumnWidth:= 25;
     Colum.Columns[6].ColumnWidth:= 20;
     Colum.Columns[7].ColumnWidth:= 20;

  //---------------Размер шрифта  ---------------------------
     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:=10;
     Colum.Rows[2].Font.Size:=10;
     Colum.Rows[3].Font.Size:=10;
     Colum.Rows[4].Font.Size:=10;
     Colum.Rows[5].Font.Size:=10;
     Colum.Rows[6].Font.Size:=10;
     Colum.Rows[7].Font.Size:=10;

    Colum.Rows.Font.Name:='MS Sans Serif';
     Sheet:=XLApp.Workbooks[1].WorkSheets['Отчет'];
     Sheet.Cells[1,3]:='Заключение хоздоговоров :    '+' ' +FormatDateTime('dd.mm.yyyy', Now);
     Sheet.Cells[1].RowHeight := 20; // высота ячейки ! Это для заголовки
//     Sheet.Cells[2].RowHeight := 60;
     Sheet.Cells[2,1]:='№ договора ';
     Sheet.Cells[2,2]:='Дата заключ. дог.';
     Sheet.Cells[2,3]:='Дата заверш. дог.';
     Sheet.Cells[2,4]:='Тема договора';
     Sheet.Cells[2,5]:='Наимен. организации';
     Sheet.Cells[2,6]:='Признак';
     Sheet.Cells[2,7]:='Стоимость дог.';

     //------------- выравнивание Загаловка столбцов по цередине------------
     Sheet.Cells[2,1].HorizontalAlignment:=3;
     Sheet.Cells[2,2].HorizontalAlignment:=3;
     Sheet.Cells[2,3].HorizontalAlignment:=3;
     Sheet.Cells[2,4].HorizontalAlignment:=3;
     Sheet.Cells[2,5].HorizontalAlignment:=3;
     Sheet.Cells[2,6].HorizontalAlignment:=3;
     Sheet.Cells[2,7].HorizontalAlignment:=3;

    //---------------------------------------------------------
    index :=3;
    qryXD.First;
    for i:=0 to qryXD.RecordCount-1  do
    begin
      //--------------  выравнивание Текст по центру 
       Sheet.Cells[index,1].HorizontalAlignment:=3;
       Sheet.Cells[index,2].HorizontalAlignment:=3;
       Sheet.Cells[index,3].HorizontalAlignment:=3;
       Sheet.Cells[index,4].HorizontalAlignment:=3;
       Sheet.Cells[index,5].HorizontalAlignment:=3;
       Sheet.Cells[index,6].HorizontalAlignment:=3;
       Sheet.Cells[index,7].HorizontalAlignment:=3;
      // ---------------------------------------------------------//
       Sheet.Cells[index,1]:=  qryXD.Fields[0].AsString;
       Sheet.Cells[index,2]:=  FormatDateTime('dd.mm.yyyy', qryXD.Fields[1].AsDateTime);
       Sheet.Cells[index,3]:=  FormatDateTime('dd.mm.yyyy', qryXD.Fields[2].AsDateTime);
       Sheet.Cells[index,4]:=   qryXD.Fields[3].AsString;
       Sheet.Cells[index,5]:=   qryXD.Fields[4].AsString;
       Sheet.Cells[index,6]:=   qryXD.Fields[5].AsString;
       Sheet.Cells[index,7]:=   qryXD.Fields[6].AsString;
       Inc(index);
       qryXD.Next;
   end;

  finally
    if  qryXD.BookmarkValid(bm) then  qryXD.GotoBookmark(bm); // возврашаем на закладку
    if  qryXD.BookmarkValid(bm) then  qryXD.FreeBookmark(bm); // освобождаем закладки
     qryXD.EnableControls; //
      screen.Cursor := oldcur;
  end;


end;

Последний раз редактировалось xxbesoxx; 11.07.2015 в 12:34.
xxbesoxx вне форума Ответить с цитированием
Старый 11.07.2015, 12:27   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Спасибо, попробую!
Dux вне форума Ответить с цитированием
Старый 25.07.2016, 14:46   #5
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

так оно открывает excel без надстроек (.xla)! а как сделать чтоб открывалось с макросами (с надстройкой из папки XLSTART или LIBRARY)...
Спасибо...
xamillion вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в Combobox.items вывести список пользователей с моей базы данных из MS Access rAMEO Общие вопросы Delphi 8 10.01.2015 14:07
Базы данных EXCEL dreary999 Microsoft Office Excel 2 02.09.2014 11:38
Вывести массив данных из базы sql на php yaskin Фриланс 1 07.08.2013 05:30
Как вывести записи(строк) таблици базы данных mdb в memo, в цикле for? Женя32 БД в Delphi 13 13.01.2013 22:41
Что делать никак не могу вывести из базы данных значения! pufystyj PHP 4 06.03.2011 12:39