Hello
I can suggest two ways.
1. First way. Create a temporary grid for export.
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
Grid: TDBGridEh;
DS: TDataSource;
Path: String;
begin
GetDir(0, Path);
Path := Path + '\TestXlsFile.xlsx';
Grid := TDBGridEh.Create(nil);
DS := TDataSource.Create(nil);
Grid.DataSource := DS;
DS.DataSet := MemTableEh1;
ExportDBGridEhToXlsx(Grid, Path, nil);
DS.Free;
Grid.Free;
ShellExecute(Application.Handle, 'Open', PChar(Path), nil, nil, SW_SHOWNORMAL)
end;
2. The second way. Use the TXlsMemFileEh class.
Code:
procedure TForm1.Button2Click(Sender: TObject);
var
xlsFile: TXlsMemFileEh;
Path: String;
Sheet: TXlsWorksheetEh;
i, ci: Integer;
begin
GetDir(0, Path);
Path := Path + '\TestXlsFile.xlsx';
xlsFile := TXlsMemFileEh.Create;
Sheet := xlsFile.Workbook.Worksheets[0];
//Export Data rows
i := 0;
MemTableEh1.DisableControls;
MemTableEh1.First;
while not MemTableEh1.Eof do
begin
for ci := 0 to MemTableEh1.FieldCount - 1 do
begin
Sheet.Cells[ci, i].Value := MemTableEh1.Fields[ci].Value;
end;
i := i + 1;
MemTableEh1.Next;
end;
MemTableEh1.First;
MemTableEh1.EnableControls;
xlsFile.SaveToFile(Path);
xlsFile.Free;
ShellExecute(Application.Handle, 'Open', PChar(Path), nil, nil, SW_SHOWNORMAL)
end;