xlsx bzw xls zu cvs konvertieren?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: xlsx zu cvs konvertieren?

Beitrag von HeX0R »

Hast Du mal ne Beispiel xlsx?

Ich hatte mir mal mit PB was gebastelt, mit dem ich xlsx Dateien "zu Fuß" lesen kann, weil ADO ein paar doofe Einschränkungen hatte.
Ist zwar sehr rudimentär, aber für ne übliche xlsx müsste das schon hinhauen.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: xlsx zu cvs konvertieren?

Beitrag von mk-soft »

Eine xlsx Datei ist eine ZIP Datei. Der Inhalt sind dann Ordner und XML Dateien.
Kannst ja mal Entpacken ...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: xlsx zu cvs konvertieren?

Beitrag von HeX0R »

Ja natürlich, davon rede ich ja.
Siehe hier: https://hex0rs.coderbu.de/cgi-bin/hv.cg ... 94&ia=1681
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: xlsx zu cvs konvertieren?

Beitrag von ccode_new »

@HeX0R:

Da hast du ein tolles Tool verbrochen. 8)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: xlsx zu cvs konvertieren?

Beitrag von Zerosurf »

HeX0R hat geschrieben: 08.02.2022 22:32 Ja natürlich, davon rede ich ja.
Siehe hier: https://hex0rs.coderbu.de/cgi-bin/hv.cg ... 94&ia=1681
Das ist echt super! Vielen Dank!

Leider funktioniert es nur bei xlsx Datein und nicht bei xls Datein.
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: xlsx zu cvs konvertieren?

Beitrag von HeX0R »

Ja klar, XLS Dateien haben ein ganz anderes Format.
Vielleicht solltest Du dann den Titel anpassen, weil Du ja doch eindeutig nach XLSX Dateien gefragt hattest.
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: xlsx zu cvs konvertieren?

Beitrag von Zerosurf »

HeX0R hat geschrieben: 09.02.2022 13:47 Ja klar, XLS Dateien haben ein ganz anderes Format.
Vielleicht solltest Du dann den Titel anpassen, weil Du ja doch eindeutig nach XLSX Dateien gefragt hattest.
Oh entschuldige bitte - mein Fehler! Hab den Titel angepasst!
PureBasic 6.00 | Windows 10 pro (x64)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: xlsx bzw xls zu cvs konvertieren?

Beitrag von ccode_new »

Hallo,

also ich würde wegen der Einfachheit einfach ein Konsolenprogramm zur Umwandlung nutzen.

Hier mal das aktuell kompilierte Konsolenprogramm von "libxls-1.6.2".
(incl. PureBasic-Beispiel)

https://workupload.com/file/urx5ydEndEk
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: xlsx zu cvs konvertieren?

Beitrag von Zerosurf »

Vielen Dank an HeXOR: https://hex0rs.coderbu.de/cgi-bin/hv.cg ... 94&ia=1681

Ich hab dank seiner Include (ExcelReader.pbi) folgendes zusammen gebastelt:

Code: Alles auswählen

XIncludeFile "ExcelReader.pbi"

Procedure main()
  Protected ExcelID, File$, count, i, j, SheetName.s, Line.s
  
  File$ = OpenFileRequester("Select Excel File", "", "Excel (*.xlsx;*.xlsm)|*.xlsx;*.xlsm|Alle Dateien (*.*)|*.*", 0)
  If File$ = ""
    ProcedureReturn
  EndIf
  
  ExcelID = EXCEL::Initialize(File$)
  
  If ExcelID = 0
    PrintN("Error: " + EXCEL::GetLastErrorText())
    ProcedureReturn 
  EndIf
  
  Count = EXCEL::CountSheets(ExcelID) - 1
  
  If OpenWindow(0, 0, 0, 270, 70, "Choose worksheet to convert:", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ComboBoxGadget(0, 10, 10, 250, 20)
    For i = 0 To Count
      AddGadgetItem(0, -1, EXCEL::GetSheetName(ExcelID, i))
    Next i
    SetGadgetState(0, 0)
    ButtonGadget(1, 115, 40, 40, 20, "OK")
    Repeat
      event = WaitWindowEvent()
      If Event = #PB_Event_Gadget
        If EventGadget() = 1 And EventType() = #PB_EventType_LeftClick
          j = GetGadgetState(0)
          SheetName = EXCEL::GetSheetName(ExcelID, j)
          Break
        EndIf
      EndIf
    Until event = #PB_Event_CloseWindow  
  EndIf
  
  If EXCEL::LoadSheetContent(ExcelID, SheetName) = 0
    MessageRequester("Error: ", EXCEL::GetLastErrorText())
  Else
    Count = EXCEL::CountContentLines(ExcelID, SheetName) - 1
    If CreateFile(0, SaveFileRequester("Save file to:", SheetName+".csv", "CSV (*.csv)|*.csv|All (*.*)|*.*", 0))
      For j = 0 To Count
        Line = EXCEL::GetContentLine(ExcelID, SheetName, j)
        Line = ReplaceString(Line, #ESC$, ",")
        WriteStringN(0, RTrim(Line, ","))
      Next j
      CloseFile(0)
      MessageRequester("Information: ","File saved!")
    Else
      MessageRequester("Error: ","Could NOT create file!")
    EndIf
  EndIf
  EXCEL::DeInitialize(ExcelID)
EndProcedure

main()
Habt ihr da Verbesserungsvorschläge?
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: xlsx bzw xls zu cvs konvertieren?

Beitrag von HeX0R »

Sieht doch gut aus!
Antworten