Entwickler-Ecke
Dateizugriff - Excel Tabelle in Delphi laden
Gintonik - Do 07.12.06 16:13
Titel: Excel Tabelle in Delphi laden
Hallo,
wie kann ich Daten aus einer bestehenden Excel-Tabelle in Delphi einbinden bzw. womit sollte ich die Daten in Delphi verabeiten?
In einer Listbox oder gibt es noch bessere Möglichkeiten ?
Thx for every Post...
Jakob Schöttl - Do 07.12.06 17:58
Also, es gibt TStringGrid, mit dem du Tabellen bearbeiten kannst, aber es ist total schwierig eine Xls-Datei dort hinein zu laden, weil eine Excel-Tabelle glaub ich eine komprimierte XML-Datei ist. Es ist also ersten schwierig die zu parsen, und du weißt ja den komprimierungsalgorithmus, und außerdem darfst du die Formatierungen und Funktionen nicht vergessen.
Also empfehle ich dir bei Delphi7 "TExcelApplication" für Excel 2000, Registerkarte "Server" (ich glaub das heißt so). Damit kannst du mit der Excel-API die Datei bearbeiten.
wurzel - Fr 22.12.06 09:13
Das funzt net, da kommt folgende Meldung wenn ich auf den Button klicke
Die Activate-Methode des Range-Objektes konnte nicht ausgeführt werden
Es wird dann auf diese Zeile im Delphi hingewiesen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67:
| function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLApp, Sheet: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; begin Result := False; XLApp := CreateOleObject('Excel.Application'); try XLApp.Visible := False;
XLApp.Workbooks.Open(AXLSFile);
Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; x := XLApp.ActiveCell.Row; y := XLApp.ActiveCell.Column;
AGrid.RowCount := x; AGrid.ColCount := y;
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; k := 1; repeat for r := 1 to y do AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R]; Inc(k, 1); AGrid.RowCount := k + 1; until k > x; RangeMatrix := Unassigned;
finally if not VarIsEmpty(XLApp) then begin XLApp.Quit; XLAPP := Unassigned; Sheet := Unassigned; Result := True; end; end; end;
procedure TForm1.Button2Click(Sender: TObject); begin if Xls_To_StringGrid(StringGrid1, 'C:\Mappe1.xls') then ShowMessage('Table has been exported!'); end; |
uwewo - Fr 22.12.06 10:49
Hast Du Excel installiert und wird es gestartet?
wurzel - Fr 22.12.06 12:07
Klar hab ich excel installiert. Und es wird garnichts gestartet, es kommt nur gleich ne meldung von excel, ob ich das dokument speichern will. aber ich sehe garkein dokument
uwewo - Fr 22.12.06 13:38
Teste mal den Anhang, kopiere die Mappe1.xls vorher in C:\
Gintonik - Di 27.03.07 16:41
Super Jungs,
ich habe einfach die Zeilen kopiert und es hat auf Anhieb gefunzt. Ich habe Excel installiert.
THX für den Code...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!