AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Excel Tabelle auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Excel Tabelle auslesen

Ein Thema von Berserker · begonnen am 28. Jan 2003 · letzter Beitrag vom 17. Dez 2003
Antwort Antwort
Seite 2 von 2     12   
CB2206

Registriert seit: 4. Feb 2003
Ort: Kaarst
13 Beiträge
 
Delphi 7 Enterprise
 
#11
  Alt 12. Feb 2003, 14:31
excel muss auf jedenfall installiert sein, sonst funktioniert das programm nicht. die komponenten sind nur kapselungen für ne ole verbindung zu excel.
Gruß
CB
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#12
  Alt 12. Feb 2003, 15:12
Zitat von Berserker:
...

Die große Preisfrage ist jetzt noch, ob das Excel, auf dem das Programm dann benutzt werden soll, auch noch installiert sein muss wenn ich Komponenten benutze.

Gibt es denn nichts einfaches?

Wieso muss immer alles so kompliziert sein

MfG, Ronny
Wenn Du Excel-Dateien direkt auslesen willst, musst Du Dich entweder intensiv mit dem Excel-Datenformat beschäftigen, oder Dich bei Torry nach einer Excel-unabhängigen Komponente (z.B. XLS-Read/Write) umsehen. Diese sind allerdings meist nicht kostenlos.

Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
165 Beiträge
 
Delphi 6 Professional
 
#13

Excel Tabelle auslesen

  Alt 12. Feb 2003, 17:33
Hi.

Hmm da muss ich mal suchen.

Wieso muss auch alles von M$ immer so kompliziert sein.

MfG Ronny
  Mit Zitat antworten Zitat
CB2206

Registriert seit: 4. Feb 2003
Ort: Kaarst
13 Beiträge
 
Delphi 7 Enterprise
 
#14
  Alt 12. Feb 2003, 19:32
Kannst ja das csv format benutzen...
Gruß
CB
  Mit Zitat antworten Zitat
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
165 Beiträge
 
Delphi 6 Professional
 
#15

Excel Tabelle auslesen

  Alt 12. Feb 2003, 20:57
Hi.

Hmm CSV geht immer gut nur die KHK-Software will nur Excel exportieren.

MfG Ronny
  Mit Zitat antworten Zitat
Rako

Registriert seit: 10. Mär 2003
Ort: 61250 Usingen
2 Beiträge
 
Delphi 5 Professional
 
#16
  Alt 10. Mär 2003, 08:12
CB2206 schrieb zur Automatisierung von Excel per Delphi:

"mh...geh in einer schleife einfach die felder in x und y richtung durch und überprüfe, ob ein inhalt drin ist. dafür darf dann jedoch zwischendurch nicht ein feld leer sein"

Frage: wie kann ich die ErrorMessage (und den Programmabbruch) bei der Typumwandlung vermeiden, wenn ich dabei ein leeres Excel-Feld einlese?
Bzw., wie stelle ich den Feldtyp fest, nachdem ich den Inhalt der Zelle an meine Variable vom Typ OleVariant übergeben habe?
Nach dem Einlesen der Zelle weiß ich ja noch nicht, ob das Feld leer, eine Zahl oder ein String ist?
Rako
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#17
  Alt 10. Mär 2003, 13:50
Hi !
Sorry erst mal, dass ich es bisher nicht geschafft habe, das Tutorial zu schreiben, gehe im Moment im Stress unter )

Überlegung: Wenn die Daten in Excel eine stupide Tabelle darstellen, also keinen generierten Report, dann speichere die XLS-Datei als CSV. Oder brauchst Du einen gewissen Automatismus ?

Meiner Meinung nach gab es in Excel so etwas ähnliches wie MaxRow (oder so) mit dem man die Anzahl der gefüllten Zeilen abfragen kann. Ich bin aber echt nicht mehr sicher. Zum Glück musste ich bisher nichts auslesen sondern nur in eine Exceltabelle schreiben. Ist irgendwie einfacher

Gruß, Helld
  Mit Zitat antworten Zitat
Rako

Registriert seit: 10. Mär 2003
Ort: 61250 Usingen
2 Beiträge
 
Delphi 5 Professional
 
#18
  Alt 10. Mär 2003, 14:45
Ich muß in der Excel-Datei auf Daten zugreifen, um Berechnungen auszuführen. Das könnte man auch in VB machen, aber da kenne ich mich nicht gut aus.
Die Datenstruktur ist z.B. in der ersten Zeile in A1 eine Überschrift,
in A2 dann ein Kommentar, und in der 3. Zeile dann von "A" bis z.B. "Z" die gemessenen Kanäle. Diese 3. Zeile für die Kanalnamen ist aber nicht fest!

Ein Hauptproblem ist, das man schon bei der Suche nach der Zeilennummer, in der die Kanalnamen stehen, eventuell auf leere Zellen trifft, wo auch eine Abfrage nach '' (Leerstring) eine Exception auslöst. Man weiß bei der OleVariant halt nie, welcher Datentyp jetzt aus der Excel-Zelle übergeben wurde.
Schreiben ist da viel einfacher, da man ja jeden Typ an die Variant-Variable übergeben kann (hierzu gibt es dann ja auch jede Menge Beispiele im Internet und in Foren).

Ich bin aber mittlerweile fündig geworden nach einem ersten wichtigen Schritt:
- mit "Case VarType of" (VarType= integer) kann man feststellen, welche Typumwandlung erforderlich ist, bei leeren Excel-Zellen ist es der Typ
VarEmpty = 0, also keine Umwandlung oder Abfrage auf Inhalt möglich.

Ansonsten kann man Integer- oder Realzahlen an entsprechende eigene Variablen übergeben, die Berechnungen ausführen und das Ergebnis dann wieder in Excel-Zellen schreiben.

Rako
Rako
  Mit Zitat antworten Zitat
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#19

Re: Excel Tabelle auslesen

  Alt 17. Dez 2003, 08:56
Ich hab das ganze auch mal ausprobiert. Wenn ich den Code hier ausführe:

Uses-Units:
Delphi-Quellcode:
uses
  Excel2000;
Globale Variable:
Delphi-Quellcode:
var
  FrmMain: TFrmMain;
  excel: TExcelApplication;
  wb: _WorkBook;
  ws: _WorkSheet;
  lcid: Integer;
Tabelle öffnen
Delphi-Quellcode:
procedure TFrmMain.Button1Click(Sender: TObject);
begin
  if OpenDialogExcel.Execute then
  begin
    // Excel öffnen
    lcid := GetUserDefaultLCID;

    excel := TExcelApplication.Create(FrmMain);
    excel.Connect;

    // Exceldatei laden
    wb := excel.Workbooks.Open(OpenDialogExcel.FileName, emptyParam, emptyParam, emptyParam, emptyParam,
                          emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
                          emptyParam, emptyParam, lcid);

    // erstes Worksheet auswählen
    ws := wb.Sheets[1] as _WorkSheet;
    OpenExcel(StringGridExcel);
  end;
end;
Tabelle auslesen
Delphi-Quellcode:
procedure OpenExcel(StringGrid:TStringGrid);
var
  x,y:Integer;
  maxCol,maxRow:Integer;
begin
  maxCol := ws.Columns.Count;
  maxRow := ws.Rows.Count;
  for x := 0 to maxCol - 1 do
  begin
    for y := 0 to maxRow - 1 do
    begin
      StringGrid.Cells[x,y] := ws.Cells.Item[x,y].Value; // <-- Hier kracht es beim ersten durchlauf!!
    end;
  end;
end;
krieg ich diese Meldung:

Code:
OLE-Fehler 800A03EC
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:48 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