mysql query excel

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

mysql query excel

Сообщение mkazakov » 25.04.2012 13:47:46

Привет, хочу получить данные query в excel

Но тут УПС в 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;                               
mkazakov
новенький
 
Сообщения: 52
Зарегистрирован: 24.02.2012 14:04:14
Откуда: Балаково

Re: mysql query excel

Сообщение Ism » 25.04.2012 15:18:40

D zconnection.properties = "codepage=cp1251"

или после соединения "SET NAMES CP1251"
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: mysql query excel

Сообщение mkazakov » 26.04.2012 10:59:21

Ну короче на время экспорта я переключаюсь на cp1251 :D
mkazakov
новенький
 
Сообщения: 52
Зарегистрирован: 24.02.2012 14:04:14
Откуда: Балаково

Re: mysql query excel

Сообщение xcod » 26.04.2012 13:24:03

UTF8ToSYS поможет7 не7 :)
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: mysql query excel

Сообщение mkazakov » 02.08.2012 12:01:12

А как его применить?
mkazakov
новенький
 
Сообщения: 52
Зарегистрирован: 24.02.2012 14:04:14
Откуда: Балаково


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 241

Рейтинг@Mail.ru