Re[3]: Экспорт данных в среде Дельфи в Excell
От: Vodyamba Россия  
Дата: 09.08.05 05:12
Оценка:
Здравствуйте, Original, Вы писали:

O>Здравствуйте, Vodyamba, Вы писали:


V>>Здравствуйте, Original, Вы писали:


O>>>Нужна помощь..не знаю как сделать это ..база данных SQL server ... с помощью дельфи надо экспортировать данные в excell ..если ктото поможет буду очень благодарен .. заранее спасибо ...


V>>Можно использовать стандартный компонент TexcelApplication, для экспорта вполне хватит.


V>>Он не очень удобный, но зато работает. И не надо ничего ниоткуда скачивать и устанавливать.


O>Спасибо за подсказку, я знаю что этим компонентом можно пользоваться , но мне нужен пример, если есть то пожалуйста покажите ..


Готовая функция, ей надо передать только параметр query или подобный и создастся окно экселя в котором всё это отображается...
Писал сам, уже не помню для чего, но работала... а у OLE объектов ничего не меняется...

Procedure v_export_excel(const q1:TDataset);
Var
TabGrid,xl,wb,ws:variant;
i,j,c,r:integer;
begin

 if q1.Active=true then
 Begin
 q1.DisableControls;
 try
    Xl := CreateOleObject('Excel.Application');
    Xl.WorkBooks.Add;
    Wb := Xl.Workbooks[1];
    Ws := Wb.Worksheets[1];

    q1.First;

  //Заполнение матрицы (Занесение наименования полей в матрицу)
      R := q1.RecordCount;
      C := q1.FieldCount;

      TabGrid := VarArrayCreate([0, R, 0, (C - 1)], VarOleStr);

        for i:=0 to q1.FieldCount-1 do
        TabGrid[0, i] := q1.Fields[i].FieldName;

   //Заполнение матрицы
        for i:=1 to r do
         Begin
          for j:=0 to c-1 do
           Begin
           if q1.Fields[j].AsVariant<>null then
               try
                TabGrid[I, J] := q1.Fields[j].value;
               except Application.MessageBox(Pchar('В процессе заполнения матрицы возникла ошибка: '+'Строка №-'+inttostr(i)+' Столбец №-'+inttostr(j)),'Обратитесь к разработчику');  end;
           end;
         q1.Next;
         end;

    Ws.Range['A1', Ws.Cells.Item[R+1, C]].Value2 :=TabGrid;

    xl.visible:=true;
    ws:=unassigned;
    wb:=unassigned;
    xl:=unassigned; 

 except
    on E : exception do
    Begin
    Application.MessageBox(pchar('Невозможно экспортировать данные'+#10+#13+'Наименование ошибки - '+e.message),'Обратитесь к разработчику',MB_OK    + MB_ICONASTERISK);
    q1.EnableControls;
    xl.visible:=false;      ws:=unassigned;
    wb:=unassigned;         xl:=unassigned;
    end;
 end;
 q1.EnableControls;
 end;
end;
... << RSDN@Home 1.1.4 stable rev. 510>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.