Aktuelle Zeit: 18.08.2019 17:19

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Excel via ODBC
BeitragVerfasst: 05.08.2019 23:31 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Ich muss ein paar Excel Dateien per PB auslesen, das Ganze habe ich per ODBC auch schon halbwegs umgesetzt.
Was ich aber einfach nicht auf die Reihe bekomme, ist die Namen der vorhandenen Sheets/Tabellen auszulesen.
Wenn ich weiss, wie das Sheet heisst, kann ich auch direkt drauf zugreifen, aber ich würde gerne vorher die vorhandenen auslesen.

Mit einem ODBC Viewer kann ich sehen, dass die unter SYSTEM TABLE stehen, aber ich bekomme einfach keine SELECT Anweisung hin, die mir die Sheets auflistet.
Hat das schonmal jemand umgesetzt?

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Excel via ODBC
BeitragVerfasst: 06.08.2019 17:04 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Mann kann das Excel File entpacken und die Sheets im Workbook auslesen.

Hier ein Beispiel (zeigt den Inhalt des Workbooks):
Code:
EnableExplicit

UseZipPacker()

Global *worksheet
Global worksheet_size.i
Global xml_node.i
Global index.i

Procedure FillTree(*CurrentNode,CurrentSublevel.i)
  Protected text.s
  Protected *child
  If XMLNodeType(*CurrentNode) = #PB_XML_Normal
    text = GetXMLNodeName(*CurrentNode) + " (Attributes: "
    If ExamineXMLAttributes(*CurrentNode)
      While NextXMLAttribute(*CurrentNode)
        text + XMLAttributeName(*CurrentNode) + "=" + Chr(34) + XMLAttributeValue(*CurrentNode) + Chr(34) + " "
      Wend
    EndIf
    AddGadgetItem(4, -1, text, 0, CurrentSublevel)   
    *child = ChildXMLNode(*CurrentNode)
    While *child
      FillTree(*child, CurrentSublevel + 1)     
      *child = NextXMLNode(*child)
    Wend       
  EndIf
EndProcedure

If OpenPack(0,"dummy.xlsx");<- change!!!
  If ExaminePack(0)
    While NextPackEntry(0)
      If Right(PackEntryName(0),12) = "workbook.xml"
        worksheet_size = PackEntrySize(0,#PB_Packer_UncompressedSize)
        If worksheet_size
          *worksheet = AllocateMemory(worksheet_size)
          If *worksheet
            If UncompressPackMemory(0,*worksheet,worksheet_size) = worksheet_size
              If CatchXML(1,*worksheet,worksheet_size)
                If OpenWindow(3,0,0,600,400, "Excel Worksheet",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
                  TreeGadget(4,10,10,580,380)
                  xml_node = MainXMLNode(1)     
                  If xml_node
                    FillTree(xml_node,0)
                  EndIf
                  For index = 0 To CountGadgetItems(4) - 1
                    SetGadgetItemState(4,index,#PB_Tree_Expanded)
                  Next
                  Repeat
                  Until WaitWindowEvent() = #PB_Event_CloseWindow
                EndIf
                FreeXML(1)
              EndIf
            EndIf
          EndIf
        EndIf
        Break
      EndIf
    Wend
  EndIf
  ClosePack(0)
EndIf   

End

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Excel via ODBC
BeitragVerfasst: 06.08.2019 22:28 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
o.k., auch ne Möglichkeit, müsste ich allerdings die Datei zweimal öffnen.
Mir ist vor allem gerade aufgefallen, dass im ODBC Viewer doch nicht alle Sheets in der SYSTEM TABLE aufgelistet werden :shock:

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Excel via ODBC
BeitragVerfasst: 07.08.2019 08:45 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Müsste mit PB v5.7 immer noch funtionieren...

Link: https://www.purebasic.fr/english/viewto ... 12&t=67180

ExamineTablle...

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Excel via ODBC
BeitragVerfasst: 07.08.2019 20:54 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Cool, Danke!
Etwas zu aufwändig zwar, aber das kann ich anpassen.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye