Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Из DBGrid в Excel   Найти похожие ветки 

 
shestoff ©   (2005-02-23 04:46) [0]

Подскажите, пожалуйста, начинающему: каким образом информацию, содержащуюся в DBGrid можно загнать в Excel? (в DBGrid тяну из таблиц SQL) Спасибо.


 
YurikGL ©   (2005-02-23 08:20) [1]

yandex+delphi+екпорт+excel


 
Иксик ©   (2005-02-23 08:40) [2]

Можешь напрямую из SQL перетянуть dts пакетом :)
А так, самый примитивный способ, какой в голову приходит, это OLE.
Хотя лучше наверное драйвера ODBC для Excel использовать, но тут я пас, такими извращениями не занимался...


 
GRAND25 ©   (2005-02-23 11:08) [3]

Лучше, чем vtkExport Library в этом вопросе сложно придумать. Найди эту библу и наслаждайся жизнью.


 
}|{yk ©   (2005-02-23 11:16) [4]

{IFDEF  UseExcel}

function TMyDBGrid.SaveToXLS(_FileName: TFileName; UseOnlyVisibleColumns: boolean = true): TFunctionResult;
var
 XLSArray, XLSRow: Variant;
 HighBound, IDX: integer;
 book: TBookmark;
 E: Exception;
 FieldsList: TStringList;
 ExcelApp: TOpExcel;
begin
 Result.Successful := False;
 Result.MessageOnError := "There is no data grid";
 try
   if Assigned(self) then
     if Assigned(DataSource) then
       if Assigned(DataSource.DataSet) then
       begin
         try
           book := DataSource.DataSet.GetBookmark;
           DataSource.DataSet.DisableControls;
           if DataSource.DataSet.IsEmpty then
           begin
             Result.MessageOnError := "Dataset is empty"
           end
           else
              {а тут власне виведення даних до варіантного масиву}
           begin
             FieldsList := TStringList.Create;
             for Idx := 0 to self.Columns.Count - 1 do
             begin
               if self.Columns[Idx].Visible or not UseOnlyVisibleColumns then
                 FieldsList.Add(self.Columns[Idx].FieldName);
             end;
             with self.DataSource.DataSet do
             begin
               Last; {щоб відфетчити всі записи}
               XLSArray := VarArrayCreate([0, RecordCount - 1], varVariant);
               First;
               while not Eof do
               begin
                 XLSRow := VarArrayCreate([0, FieldsList.Count - 1], varVariant);
                 for IDX := 0 to FieldsList.Count - 1 do
                   XLSRow[IDX] := FindField(FieldsList.Strings[Idx]).Value;
                 XLSArray[RecNo - 1] := XLSRow;
                 Next;
               end;
             end;
             Result.MessageOnError := "Data retrived from dataset, but not inserted into Excel";
             {тепер грузимо Excel та кидаємо в нього масив}
             try
               ExcelApp := TOpExcel.Create(self);
               ExcelApp.Visible := false;
               ExcelApp.Connected := true;
               with ExcelApp.Workbooks.Add do
               begin
                 with Worksheets.Add do
                   with Ranges.Add do
                   begin
                     for IDX := VarArrayLowBound(XLSArray, 1) to VarArrayHighBound(XLSArray, 1)
                       do
                     begin
                       Address := GetCellRangeName(1, FieldsList.Count, IDX + 1, IDX + 1);
                       Name := Format("Record No %d", [IDX]);
                       Value := XLSArray[IDX];
                     end;
                   end;
                 SaveAs(_FileName);
               end;
               Result.Successful := true;
               Result.MessageOnError := "Succesfull transfered data";
             finally
               ExcelApp.Free;
             end;
           end;
         finally
           if Assigned(book) then
             DataSource.DataSet.GotoBookmark(book);
           if Assigned(FieldList) then
             FieldList.Free;
           DataSource.DataSet.EnableControls;
         end;
       end;
 except on E: Exception do
   begin
     Result.MessageOnError := E.Message;
     Exit;
   end;
 end;
end;
{ENDIF}


 
}|{yk ©   (2005-02-23 11:19) [5]

Ошибся, более старая версия
ExcelApp := TOpExcel.Create(self);
стоит перед try, а не после


 
Megabyte ©   (2005-02-23 11:32) [6]

Мдяя, я думал, все гораздо проще. :)
Тоже потребовалось транспортировать данные в Эксель.


 
Ditrix ©   (2005-02-23 11:44) [7]

можноя  использовать Grid из состава EhLib
функция SaveDBGridEhToExportFile(...)


 
KSergey ©   (2005-02-24 06:24) [8]

http://www.delphikingdom.com/asp/itemq.asp?mode=1&itemid=2

и читаем как минимум "По волнам интеграции… " в 3-х частях.



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
14-1109166287
Antonn
2005-02-23 16:44
2005.03.13
Как создать свой шрифт (*.ttf) ?


3-1107951768
vvv_spb
2005-02-09 15:22
2005.03.13
SELECT FROM JOIN


14-1108742992
Doxygen
2005-02-18 19:09
2005.03.13
DocBook


1-1109687795
Phoenix9000
2005-03-01 17:36
2005.03.13
Поиск в подкаталоге


14-1109112984
Александр грифин
2005-02-23 01:56
2005.03.13
Требуется программист для реализации проекта