Seite 1 von 1

xlsx richtig verpacken

Verfasst: 13.07.2013 01:35
von The_Dark_Zim-.-
Hey ho,

ich versuche gerade eine *.xlsx Datei zu erstellen. Die xml Datein bekomme ich geschrieben. Wenn ich das ganze dann mit 7zip oder Winrar verpacke kann ich es mit LibreOffice öffnen. Aber wenn ich es mit dem PB Packer verpacke geht es nicht. Dann kommt immer eine Filterliste, wenn ich dort dann Excel 2010 raussuche kommt es zu einem Fehler.

Ich denke mal er verpackt, trotz UseZipPacker(), anderes. Hat jemand eine Idee was ich anders machen könnte? Kann da CompressMemory() evtl. funktionieren oderso?

Gruß Zim

Re: xlsx richtig verpacken

Verfasst: 13.07.2013 11:30
von uweb
hey ho,
eventuell klappt das mit CompressMemory() - versuch macht klug.
für den fall, dass nicht:
ich habe zwar keine erfahrung mit *.xlsx, wohl aber damit manchmal den wald vor lauter bäumen nicht zu sehen.
:)
es gibt zahlreiche alternativen. du bist nicht auf die pb-packer-funktionen angewiesen.
suche doch einfach mal nach 'zip' mit 'Nur im Betreff der Themen'. da findest du zahlreiche möglichkeiten - z.t. aus älteren versionen.
ffpx
uwe

Re: xlsx richtig verpacken

Verfasst: 13.07.2013 12:33
von Kiffi
die mit folgendem Code erstellte XLSX-Datei kann MS Excel 2007 problemlos öffnen

SoftMaker PlanMaker 2012 meldet: Unbekanntes Dateiformat.

LibreOffice habe ich nicht installiert; dürfte aber ähnlich wie SoftMaker sein.

Code: Alles auswählen

EnableExplicit

Global NewList FileToZip.s()

Procedure ListFiles(EntryPath.s)
	
	; Original von Lebostein
	
	Protected UsedDirectory
	Protected EntryType
	Protected EntryName.s
	
	If Right(EntryPath, 1) <> "\" : EntryPath + "\" : EndIf
	
	UsedDirectory = ExamineDirectory(#PB_Any, EntryPath, "*.*")
	
	While NextDirectoryEntry(UsedDirectory)
		
		EntryType = DirectoryEntryType(UsedDirectory)
		EntryName = DirectoryEntryName(UsedDirectory)
		
		If EntryName = "." Or EntryName = "..": Continue: EndIf
		
		If EntryType = #PB_DirectoryEntry_File
			AddElement(FileToZip())
			FileToZip() = EntryPath + EntryName
		EndIf
		
		If EntryType = #PB_DirectoryEntry_Directory
			ListFiles(EntryPath + EntryName)
		EndIf
		
	Wend: FinishDirectory(UsedDirectory)
	
EndProcedure

Define RootFolder.s = "D:\xlsxtest\xlsxtest\"

ListFiles(RootFolder)

UseZipPacker()

If CreatePack(0, "D:\xlsxtest\xlsxtestpb.xlsx")
	ForEach FileToZip()
		AddPackFile(0, FileToZip(), ReplaceString(FileToZip(), RootFolder, ""))  
	Next
	ClosePack(0)
EndIf
Grüße ... Kiffi

// Edit: Hat wohl was mit dem Komprimierungsgrad zu tun. Die Originaldatei,
aus der ich den Inhalt entzippt habe, ist 8 KB groß; die von PB erstellte ist
nur 6 KB groß.

Re: xlsx richtig verpacken

Verfasst: 15.07.2013 09:36
von alen
Hallo Zusammen,

vor längerem hatte ich damit auch rumgespielt. Ging es da nicht um in einer XML Datei verpackten Checksumme die zum Archiv passen musste.
Kann mich nicht mehr so gut daran erinnern. Aber ich meine wenn man keine Checksumme gebildet und mitgegeben hat wurde das als "unbekanntes Format" bemängelt.

Hoffe Die Info hilft ein wenig weiter.

Grüße
Alen