Но тут УПС в excel кракозябры.
бд mysql.
компонента zoes.
кодировка в схеме utf8.
в подключении тоже.
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData : Variant;
BeginCol, BeginRow, RowCount, ColCount, i, j : integer;
begin
// Координаты левого верхнего угла области, в которую будем выводить данные
BeginCol := 1;
BeginRow := 2;
RowCount := 0;
ColCount := 0;
// Создание Excel
ExcelApp := CreateOleObject('Excel.Application');
// Отключаем реакцию Excel на события, чтобы ускорить вывод информации
ExcelApp.Application.EnableEvents := false;
// Создаем Книгу (Workbook)
// Если заполняем шаблон, то Workbook := ExcelApp.WorkBooks.Add('C:MyTemplate.xls');
Workbook := ExcelApp.WorkBooks.Add;
// Размеры выводимого массива данных
RowCount := zquery1.RecordCount;
ColCount := zquery1.FieldCount;
// Создаем Вариантный Массив, который заполним выходными данными
ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
zquery1.First;
zquery1.DisableControls;
for I := 1 to RowCount do
begin
for j := 0 to ColCount - 1 do
begin
if (zquery1.Fields.Fields[j].AsVariant <> null) then
ArrayData[I, j+1] := trimright(zquery1.Fields.Fields[j].AsVariant)
else
ArrayData[I, j+1] := '';
end;
zquery1.Next;
end;
zquery1.EnableControls;
ExcelApp.cells[1,1].select;//перенесем курсор Excel'а в первую ячейку
// Левая верхняя ячейка области, в которую будем выводить данные
Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
// Правая нижняя ячейка области, в которую будем выводить данные
Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol + ColCount - 1];
// Область, в которую будем выводить данные
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
// А вот и сам вывод данных
// Намного быстрее поячеечного присвоения
Range.Value := ArrayData;
//ориентация - альбомная
ExcelApp.ActiveSheet.PageSetup.Orientation := 2;
// Делаем Excel видимым
ExcelApp.Visible := true;
end;