Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

Экспорт запроса в Excel   Найти похожие ветки 

 
RomanH ©   (2006-08-08 16:15) [0]

Доброго дня мастера. Всеми уважаемый В.Фаронов приводит такой метод экспорта из Query в Exel.
procedure TForm1.Button1Click(Sender: TObject);
var
 Range,Sheet: Variant; //Для хранения одноименных объектов
 Row: Integer;         //Счетчик строк
 BegTime: TDateTime;   //Хранит время начала работы
begin
 BegTime := Time;
 if not VarIsEmpty(Excel) then
   Exit;  //Игнорируем щелчок, если таблица уже создана
 //Пытаемся открыть НД
 try
   Books.Open;
 except
   ShowMessage("Невозможно открыть таблицу BOOKS.DB");
   Exit
 end;
 //Пытаемся создать главный объект Excel.Application
 try
   Excel := CreateOleObject("Excel.Application")
 except
   ShowMessage("Нет доступа к серверу Excel");
   Exit
 end;
 //Изменяем форму курсора перед длительной работой
 Screen.Cursor := crHourGlass;
 //Добавляем новую рабочую книгу с одним листом:
 Excel.SheetsInNewWorkbook := 1;
 Excel.Workbooks.Add;  
 //Устанавливаем в Sheet ссылку на первый лист:
 Sheet := Excel.Workbooks[1].Sheets[1];
 //Устанавливаем меньшие поля страницы
 Sheet.PageSetup.LeftMargin := 30;
 Sheet.PageSetup.RightMargin := 30;
 Sheet.PageSetup.TopMargin := 40;
 Sheet.PageSetup.BottomMargin := 30;
 //Разрешаем печать сетки
 Sheet.PageSetup.PrintGridLines := True;
 //Изменяем умалчиваемую ширину колонок:
 Range := Sheet.Columns;
 Range.Columns[1].ColumnWidth := 4;  //Колонка "Код"
 Range.Columns[2].ColumnWidth := 70; //Колонка "Название"
 Range.Columns[3].ColumnWidth := 3;  //Колонка "Пачка"
 Range.Columns[4].ColumnWidth := 4;  //Колонка "Год"
 Range.Columns[5].ColumnWidth := 4;  //Колонка "Страницы"
 Range.Columns[6].ColumnWidth := 4;  //Колонка "Цена"
 //Изменяем высоту шрифта для всех колонок:
 Range.Columns.Font.Size := 8;
 //Готовим заголовок прайс-листа:
 Range := Sheet.Range["a1:f1"];      //Диапазон для первого ряда
 Range.Font.Size := 15;              //Высота шрифта
 Range.Font.Bold := True;            //Шрифт жирный
 Range.Font.Italic := True;          // и курсив
 Range.Columns.Interior.ColorIndex := 6; //Фон желтый
 Range.HorizontalAlignment := 3;     //Текст по центру
 Sheet.Cells[1,2] := "Прайс-лист на "+DateToStr(Date);
 //Готовим заголовки колонок:
 Range := Sheet.Range["a2:f2"];
 Range.Font.Size := 10;
 Range.Font.Bold := True;
 Sheet.Cells[2,1] := "Код";
 Sheet.Cells[2,2] := "Название/ Автор/ Издательство";
 Sheet.Cells[2,3] := "Пачка";
 Sheet.Cells[2,4] := "Год";
 Sheet.Cells[2,5] := "Страниц";
 Sheet.Cells[2,6] := "Цена";
 pb.Show;
 pb.Max := Books.RecordCount;
 pb.Position := 0;
 Row := 3;
 while not Books.EOF do
 begin
   Sheet.Cells[Row,1] := BooksBookID.Value;
   Sheet.Cells[Row,2] := BooksBName.Value+"/ "+
     BooksBAuthor.Value+"/Value "+BooksBPublish.Value;
   Sheet.Cells[Row,3] := BooksBStand.Value;
   Sheet.Cells[Row,4] := BooksBYear.Value;
   Sheet.Cells[Row,5] := BooksBPages.Value;
   Sheet.Cells[Row,6] := BooksBOpt.Value;
   inc(Row);
   pb.Position := Row-3;
   Application.ProcessMessages;
   Books.Next
 end;
 pb.Hide;
 Screen.Cursor := crDefault;
 Excel.Visible := True;  //Показываем окно Excel с готовой таблицей
 lb.Caption := "Время работы: "+TimeToStr(Time-BegTime)
end;

Вопрос: существут ли более быстрые методы экспорта токого рода.


 
ANB ©   (2006-08-08 16:18) [1]

Угу.

1. Выгрузить в HTML, дать файлу расширение xls и открыть. Очень быстро, но ограничения по форматированию.

2. Выгрузить в XML формата самого Excel. Но формата я не знаю. Вроде как обещали его открыть.


 
Сергей М. ©   (2006-08-08 16:23) [2]


> существут ли более быстрые методы экспорта токого рода


Axolot XLSReadWriteII2
DevExpress TcxSpreadSheetBook


 
Desdechado ©   (2006-08-08 16:32) [3]

> Экспорт запроса
Так тебе текст запроса или результат его выполнения экспортировать?

Можешь открыть файл экселя, как таблицу БД, и писать в нее.


 
RomanH ©   (2006-08-08 16:38) [4]


> Desdechado ©

Мне результат выполнения. А как открыть файл Excel  как БД и результат
IBQuery записать в файл.


 
RomanH ©   (2006-08-08 16:46) [5]


> ANB ©

Подскажите пожайлусто как выгрузить результат запроса в HTML


 
evvcom ©   (2006-08-08 17:04) [6]

> существут ли более быстрые методы экспорта токого рода

Существуют. Данные записывать не поячеечно, а целиком массивом. См. VarArrayCreate и Sheet.Range[..].Value2


 
VadimSpb   (2006-08-08 17:12) [7]

Быстрый экспорт только через массив.
Примеры на http://delphiworld.narod.ru/_tech_.html


 
YurikGL ©   (2006-08-08 21:09) [8]


> Можешь открыть файл экселя, как таблицу БД, и писать в нее.

Если через ADO, то работает крайне медленно...


> 2. Выгрузить в XML формата самого Excel. Но формата я не
> знаю. Вроде как обещали его открыть.

Вроде здесь
http://www.microsoft.com/office/xml/default.mspx
но проще сохранить в xml и посмотреть его, скажем, блокнотом :)

Есть еще вариант 3
Экспорт в текстовый файл с разделителем ";" т.е. в файл *.csv



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.063 c
3-1155172585
Александр007
2006-08-10 05:16
2006.10.08
Доступ к чужой базе Paradox


15-1158572328
ПЛОВ
2006-09-18 13:38
2006.10.08
Подскажите С++ аналог Делфи-ф-ции FRAC


2-1158847463
milko
2006-09-21 18:04
2006.10.08
IntToHex


15-1158300245
Ega23
2006-09-15 10:04
2006.10.08
Специалисты по MySQL, отзовитесь!


15-1158236541
Ega23
2006-09-14 16:22
2006.10.08
С Днём рождения! 14 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский