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?
Excel via ODBC
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Excel via ODBC
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: Excel via ODBC
Mann kann das Excel File entpacken und die Sheets im Workbook auslesen.
Hier ein Beispiel (zeigt den Inhalt des Workbooks):
Hier ein Beispiel (zeigt den Inhalt des Workbooks):
Code: Alles auswählen
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
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: Excel via ODBC
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
Mir ist vor allem gerade aufgefallen, dass im ODBC Viewer doch nicht alle Sheets in der SYSTEM TABLE aufgelistet werden
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: Excel via ODBC
Müsste mit PB v5.7 immer noch funtionieren...
Link: https://www.purebasic.fr/english/viewto ... 12&t=67180
ExamineTablle...
Link: https://www.purebasic.fr/english/viewto ... 12&t=67180
ExamineTablle...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- HeX0R
- Beiträge: 2960
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: Excel via ODBC
Cool, Danke!
Etwas zu aufwändig zwar, aber das kann ich anpassen.
Etwas zu aufwändig zwar, aber das kann ich anpassen.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}