Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: октябрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как из DBGrid перенести данные в существующий Excel файл

Автор: xUSSR

Во время раскопок в Америке были найдены кусочки медной проволоки. После долгих исследований было выяснено, что это - остатки древней кабельной сети, которой пользовались индейцы. Во время раскопок в Германии были найдены кусочки стекла. После долгих исследований было выяснено, что это - остатки оптоволоконной сети древних нибелунгов. В России долго копали, копали, копали... и не нашли ничего. Так было выяснено, что древние славяне пользовались спутниковой связью.


 //Если не обезательно из DBGrid-а... то вот пример из Query ...
 // Если есть вопросы то ¹ ACQ 134087719
 
 // имя файла шаблона и откуда (можно TTable)
 Procedure SendtoExcel(ShFile: String; Querys: TQuery);
 Var
    ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: Variant;
    BeginCol, BeginRow, j: integer;
    RowCount, ColCount: Integer;
 Begin
    BeginCol := 1;
    BeginRow := 3;
 
  // Размеры выводимого массива данных
    RowCount := Querys.RecordCount;
    ColCount := Querys.FieldDefs.Count;
 
  // Создание Excel
    ExcelApp := CreateOleObject('Excel.Application');
 
  // Отключаем реакцию Excel на события, чтобы ускорить вывод информации
    ExcelApp.Application.EnableEvents := false;
 
  //  Создаем Книгу (Workbook)
  //  Если заполняем шаблон, то
    Workbook := ExcelApp.WorkBooks.Add(ShFile);
    ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
 
  // Заполняем массив
    Querys.DisableControls;
    Querys.First;
    While Not Querys.eof Do
    Begin
        For J := 1 To Querys.FieldDefs.Count Do
        Begin
            ArrayData[Querys.RecNo, J] :=
             Querys.FieldbyName(Querys.FieldDefs.Items[j - 1].DisplayName).value;
        End;
        Querys.Next;
    End;
 
    Querys.EnableControls;
 
 //     Левая верхняя ячейка области, в которую будем выводить данные
    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;
 
  // Делаем Excel видимым
    ExcelApp.Visible := True;
 End;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS