Форум: "Потрепаться";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизИз 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c