Also, hab mal drüber geschlafen. Das könnte funktionieren, wenn ich sortiere, bevor ich das Format hinzufüge.
Vielleicht sollte ich mal das Gesamtproblem beschreiben:
Ein Kunde schickt eine oder mehrere ExcelDatei(en). Diese werden von meinem Programm per Spreadsheet::ParseExcel gelesen
(an dieser Stelle fällt mir gerade ein: weiss jemand, wie ich mit ParseExcel nur die Überschriften anstatt die Gesamtdatei auslese? Der Speicherverbrauch ist enorm..)
Nun bekommt man diese in einer TableMatrix angezeigt, hat eine Datei mehrere Tabellen, werden diese auch angezeigt.
Man kann die Überschriften einer Zeile (=einer Tabelle) untereinander verschieben, Formate einstellen und Zeilen oder Spalten ausblenden, es werden aus der Vereinigungsmenge aller Unter-Überschriften eine Hauptüberschrift erzeugt. Zweck des ganzen: z.B. steht in Tabelle 1 in Spalte 3 der Vorname, in der zweiten Tabelle steht dieser jedoch in Spalte 8. Diese kann man jetzt einander zuordnen.
Mein Code erstellt pro Datei ein Spreadsheet::ParseExcel-Objekt.
Ist man fertig, kann man sehr viele Optionen auswählen, hier mal einige davon:
- Laufende Nummer hinzufügen
- Säubern ( DDE-Fehler entfernen )
- Pivot-Tabelle erstellen
- Statistiken erstellen
- XX-Zeile hinzufügen
- Umbrüche entfernen
- Mehrfache Whitespaces(Tabs + Leerzeichen) auf ein - Leerzeichen reduzieren
- auf ungrade Zahl Anführungszeichen prüfen
- auf ungültige Kontonummern prüfen
- auf ungültige Postleitzahl prüfen (International)
- auf ungültige Postleitzahl prüfen (Deutschland, fragt nicht nach Länderspalte)
- Länderspalte in Grossbuchstaben
- Perl-Code pro Zelle ausführen
Danach wird man je nach Option nach Zusatzinfos gefragt.
Jetzt wird ein Spreadsheet::WriteExcel-Objekt erzeugt und eine Schleife arbeitet alle Spreadsheet::ParseExcel-Objekte->Tabellen->Zeilen->Zellen ab, wobei je nach Einstellung ein Format oder Zusatzinfos hinzugefügt werden.
So, jetzt möchte ich das ganze Sortieren (+nachträglich eine laufende Nummer einfügen) können, mittlerweile nach 7 Sortierkriterien nach Rücksprache mit meinen Chefs, mir fallen folgende Möglichkeiten ein:
1. Ich füge erst alle Dateien zu einer zusammen, speichere,
1a. lese diese in ein Perl-Array, sortiere per @array = sort { .. } @array;
1b. sortiere diese mit Win32::OLE, speichere (kommt mir am performantesten vor)-->
http://www.buha.info/board/showthread.php?t=53486
1c. sortiere diese mit DBD::Excel, speichere
..und öffne die Datei nochmals, um die gewünschten Optionen zu applizieren
2. Ich speichere Formate + Daten in ein Perl-array, sortiere, speichere mit WriteExcel. Vorteil: Nur einmal sehr viele Datensätze in eine Datei schreiben und auch nicht nochmal auslesen. Nachteil: Ich muss Formate mitsortieren -> lahm
Was denkt ihr? Wie wäre es am besten?\n\n
<!--EDIT|GoodFella|1172570416-->