Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TExcelApplication: Workbook-Struktur auslesen (https://www.delphipraxis.net/32369-texcelapplication-workbook-struktur-auslesen.html)

Igotcha 22. Okt 2004 10:32


TExcelApplication: Workbook-Struktur auslesen
 
Hallo zusammen,

ich benötige für meine Anwendung eine Importfunktion von Excel-Tabellen. Da in einer Excel-Datei mehrere Sheets vorkommen können, muss ich rausbekommen, wie diese heissen, damit der User das(die) entsprechenden Sheets vor dem Import auswählen kann.

Ich benutze TExcelApplication und bekomme momentan nur raus, wie viele Sheets die Datei hat,

Delphi-Quellcode:
ExcelApp.Sheets.Count
aber leider nicht die Namen.

Gruß Igotcha

Mario 22. Okt 2004 10:34

Re: TExcelApplication: Workbook-Struktur auslesen
 
Prüfe mal, ob Sheets nicht eine property Items(Index: Integer) besitzt. Damit solltest Du an die Infos ran kommen.

Luckie 22. Okt 2004 10:35

Re: TExcelApplication: Workbook-Struktur auslesen
 
Schon mal nach dem Punkt nach Sheets mal die Codevervollständigung durch gesehen, was dir noch für Methiden angeboten werden? Gibt es da kein [i]Sheet.Name oder so ws?

Igotcha 22. Okt 2004 10:40

Re: TExcelApplication: Workbook-Struktur auslesen
 
Nee, gibt es nicht. Nach "Sheets" wird es sehr kryptisch:

Delphi-Quellcode:
Item :[Index: OleVariant]: IDispatch
nach "Item[ix]." wird es noch schlimmer. Da sind Parameter vom Typ "TGUID", "Obj" mit dem Ergebnistyp "HRESULT" aufgeführt, aber auch nichts mit "name" o.ä.

Mario 22. Okt 2004 10:42

Re: TExcelApplication: Workbook-Struktur auslesen
 
Schaue mal hier nach, wie Du an das Sheet ran kommst:
http://www.delphipraxis.net/internal...heets+workbook

Igotcha 22. Okt 2004 10:47

Re: TExcelApplication: Workbook-Struktur auslesen
 
Zitat:

Zitat von Mario
Schaue mal hier nach, wie Du an das Sheet ran kommst:
http://www.delphipraxis.net/internal...heets+workbook

Leider wird dort direkt mit "Sheets[1]" auf ein Sheet zugegriffen. Wie ich zugreife, weiss ich - ich möchte davor aber wissen, wie viele Sheets es gibt (ok, habe ich) und wie diese heissen, da ich diese in einer CheckListbox zur Auswahl anzeigen lassen möchte.

Mario 22. Okt 2004 10:53

Re: TExcelApplication: Workbook-Struktur auslesen
 
Zitat:

Delphi-Quellcode:
uses
Excel97; // falls Excel 97 benutzt wird

var
  excel: TExcelApplication;
  wb: _WorkBook;
  ws: _WorkSheet;
  lcid: Integer;
...
    // Excel öffnen
    lcid := GetUserDefaultLCID;

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

    // Exceldatei laden (test.xls)
    wb := excel.Workbooks.Open('test.xls', emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, lcid);

    // erstes Worksheet auswählen
    ws := wb.Sheets[1] as _WorkSheet;
...

Am Ende steht ein Worksheet, wo die Codevervollständigung wieder greift und Du nachschauen kannst, ob es so eine Eigenschaft wie Name oder Caption gibt.

Igotcha 22. Okt 2004 11:06

Re: TExcelApplication: Workbook-Struktur auslesen
 
Super, funktioniert - danke!

Tim Henford 18. Sep 2008 08:39

Re: TExcelApplication: Workbook-Struktur auslesen
 
Eine Frage zum letzten alternativen source noch:
Ist es gewollt, dass sich in Excel ein "Datenquelle auswählen" Fenster öffnet?

So ganz ist mir die Intention von DSN noch nicht klar, muss diese erst erstellt werden oder ist das der Servername, der auch im Enterprise Manager steht?

Danke Tim

Mario 18. Sep 2008 08:50

Re: TExcelApplication: Workbook-Struktur auslesen
 
Versuche es mal mit einer frischen einfachen Excel-Datei. Ich kann mir fast nur vorstellen, dass die Excel-Datei selbst das Problem hervorruft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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