Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизЭкспорт запроса в 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;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.047 c