AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XLS-Datei in Stringgrid einlesen ohne daß EXCEL installiert
Thema durchsuchen
Ansicht
Themen-Optionen

XLS-Datei in Stringgrid einlesen ohne daß EXCEL installiert

Ein Thema von Schlingel · begonnen am 14. Sep 2004 · letzter Beitrag vom 15. Sep 2004
Antwort Antwort
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#1

XLS-Datei in Stringgrid einlesen ohne daß EXCEL installiert

  Alt 14. Sep 2004, 19:41
Hallo

Ich möchte eine XLS Datei in ein StringGrid einlesen obwohl kein EXCEL installiert ist.

Vielleicht kann mir jemand ein Tip geben.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Kevin
Kevin

Registriert seit: 11. Feb 2004
Ort: Bonn
576 Beiträge
 
Delphi 2006 Professional
 
#2

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 14. Sep 2004, 21:04
Schau Dir mal die Gridkomponenten von TMS Software an, die können das...
Kevin
  Mit Zitat antworten Zitat
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#3

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 14. Sep 2004, 22:16
das war ein tip....

wenn ich excel installiere funktioniert es auch...

für eine bessere variante wäre ich dankbar.

grüße
  Mit Zitat antworten Zitat
Benutzerbild von Kevin
Kevin

Registriert seit: 11. Feb 2004
Ort: Bonn
576 Beiträge
 
Delphi 2006 Professional
 
#4

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 14. Sep 2004, 22:18


[edit]Nach der ersten Verwunderung:

Dann erläutere doch einfach mal etwas genauer, was Du möchtest...[/edit]
Kevin
  Mit Zitat antworten Zitat
Schlingel

Registriert seit: 15. Feb 2003
Ort: Österreich
67 Beiträge
 
Delphi XE2 Professional
 
#5

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 14. Sep 2004, 23:13
sorry weil ich so genervt bin...


was ich nicht will:

a.) Komponente die kostenpflichtig ist.
b.) Komponente die mit 'Trial' Hinweis versehen ist.


was i bräuchte: (Code funktioniert wenn Excel installiert)
Delphi-Quellcode:
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;
  // Create Excel-OLE Object
  XLApp := CreateOleObject('Excel.Application');
  try
    // Hide Excel
    XLApp.Visible := False;

    // Open the Workbook
    XLApp.Workbooks.Open(AXLSFile);

    // Sheet := XLApp.Workbooks[1].WorkSheets[1];
    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];

    // In order to know the dimension of the WorkSheet, i.e the number of rows
    // and the number of columns, we activate the last non-empty cell of it

    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
    // Get the value of the last row
    x := XLApp.ActiveCell.Row;
    // Get the value of the last column
    y := XLApp.ActiveCell.Column;

    // Set Stringgrid's row &col dimensions.
    AGrid.RowCount := 1;
    AGrid.ColCount := 1;

    AGrid.RowCount := x;
    AGrid.ColCount := y;

    // Assign the Variant associated with the WorkSheet to the Delphi Variant

    RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
    // Define the loop for filling in the TStringGrid
    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;
    // Unassign the Delphi Variant Matrix
    RangeMatrix := Unassigned;

  finally
    // Quit Excel
    if not VarIsEmpty(XLApp) then
    begin
      // XLApp.DisplayAlerts := False;
      XLApp.Quit;
      XLAPP := Unassigned;
      Sheet := Unassigned;
      Result := True;
    end;
  end;
end;

sollte aber auch ohne installiertem EXCEL funktionieren.

Prinzipell bin ich mit allem zufrieden wenn ich die XLS-Datei in ein StrinGrid(optimal) oder in ein CSV od TXT Format bekomme.


Grüsse
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 14. Sep 2004, 23:21
Zitat:
a.) Komponente die kostenpflichtig ist.
b.) Komponente die mit 'Trial' Hinweis versehen ist.
Tja, dann wird dir nichts anderes übrigbleiben als das properitäre Excelt datei Format von Micrososft zu "entschlüsseln". Solltets du nichts im Internet dazu finden, dann wünsche ich dir viel Spass für das nächste Jahr. Und für die nächsten zwei bis drei, wenn du die Formate aller Excel Versionen berücksichtigen willst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#7

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 15. Sep 2004, 06:45
Hallo Schlingel,
ein Weg ohne Excel-Applicationsobjekt auszukommen kann die Nutzung des ODBC-Treibers sein. Auf fast jedem Windowsrechner ist einer für Excel installiert, und zwar meist auch dann wenn Excel selbst fehlt. Allerdings hast Du dann "nur" die Möglichkeit die Tabellen wie Datenbanktabellen zu behandeln (eine Spalte entspricht dann einem Feld in der Datenbank).

Sonst bleibt wohl nur der Einsatz von Tools oder der von Lucky genannte Weg

Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 15. Sep 2004, 07:26
Ein Beispiel für den ADO-Weg (ODBC ist ein unnötiger Umweg) gibt es im Entwickler-Forum
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Kevin
Kevin

Registriert seit: 11. Feb 2004
Ort: Bonn
576 Beiträge
 
Delphi 2006 Professional
 
#9

Re: XLS-Datei in Stringgrid einlesen ohne daß EXCEL installi

  Alt 15. Sep 2004, 09:17
Zitat von Schlingel:
sorry weil ich so genervt bin...
Schon in Ordnung Gab es aus meiner Sicht aber keinen wirklichen Grund zu.


Zitat von Schlingel:
was ich nicht will:

a.) Komponente die kostenpflichtig ist.
b.) Komponente die mit 'Trial' Hinweis versehen ist.
Die von mir genannte Komponente ist für den nichtkommerziellen Einsatz auch nicht kostenpflichtig.

Ich würde mich an Deiner Stelle auf die Suche nach einer passenden Freeware-Komponente machen. Alle anderen Wege kosten schon ein "wenig" mehr Zeit. Brauchbare Tipps um es selber zu lösen hast Du ja bereits bekommen. Aber ob es das ist, was Du möchtest...?!
Kevin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz