ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
572
572
EMPFEHLEN
-
Hallo. Ich habe folgende Sache:
ich arbeite zur Zeit mit POI-HSSF und lese Exceldateien aus. Nun möchte ich die verschiedenen Formel-Zellen darauf untersuchen, ob diese "geklont" sind. Das bedeutet, ob die Formel in diesen sich nur durch unterschiedliche Zellenverweise unterscheiden. Als Bsp. Zelle 1 "=SUM(A1:X1)" und Zelle 2 "=SUM(A2:X2)" und so weiter. Da es mittels POI nur möglich ist, zeilenweise einzulesen habe ich mich dazu entschieden, einen TreeMap einzusetzen und als Key die Zellenbezeichnung zu nehmen und als Value die Formel einzutragen. Durch die automatische Sortierung erhalte ich dann in etwa folgendes:
A10 = "=SUM(A1:X1)"
A11 = "=SUM(A2:X2)"
...
und so weiter. Soweit bin ich damit auch zufrieden, ABER ich habe Problem bei folgender Konstellation:
A10 = "=SUM(A1:X1)"
A100 = "=A10"
A11 = "=SUM(A2:X2)"
Wie ihr sicher seht, sortiert die Map nicht genau nach Zahlen, sondern scheinbar nach Zeichenstellen oder so. Das wäre allerdings für meine folgende Untersuchung auf Geklontheit nicht so gut. Deshlab meine Frage: gibt es eine Möglichkeit, die Map "genauer" sortieren zu lassen, so dass die Reihenfolge "A10, A11, A100" herauskommt oder gibt es da eventuell eine andere Map, die dafür geeigneter ist? Danke schonmal für nützliche Tipps und Hinweise.
Gruß Hardie
-
Anmerkung: Map bezieht sich auf TreeMap.
Post war ursprünglich in dem http://www.tutorials.de/forum/java/3...ortierung.html Thread zu finden. Habe diesen in einen eigenen Thread verschoben.
-
Hi Hardie,
die TreeMap wird in Deinem Fall alphanumerisch sortiert.
Wenn Du das ändern willst, kannst Du bei der TreeMap im Konstruktor eine Comparator mitgeben.
Gruß
joschi
-
Aha, ich muss demnach einen eigenen Comparetor erzeugen und diesen dann mitliefern? Hast du eine Idee, wie der aussehen könnte, damit ich das geforderte Ergebnis erhalte?
Gruß
Hardie
-
Hi Hardie,
Du könntest es mal hiermit probieren.
Ist aber nicht gut getestet.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
class TestComparator implements Comparator<String>{ public int compare(String s1, String s2){ String alpha1 = s1.substring(0, getAlphaEndIndex(s1)); int numeric1 = Integer.parseInt(s1.substring(alpha1.length())); String alpha2 = s1.substring(0, getAlphaEndIndex(s2)); int numeric2 = Integer.parseInt(s2.substring(alpha2.length())); if(alpha1.compareTo(alpha2) != 0) { return alpha1.compareTo(alpha2); } else { return numeric1 - numeric2; } } private int getAlphaEndIndex(String s) { int index = 0; for(byte c : s.getBytes()) { if (c >= 'A') index++; else break; } return index; } }
Gruß
joschi
Ähnliche Themen
-
Excel - Doppelte Einträge finden
Von ziriander im Forum Office-AnwendungenAntworten: 32Letzter Beitrag: 23.03.12, 10:05 -
bestimmte Dateien auf Server finden
Von Kalito im Forum PHPAntworten: 1Letzter Beitrag: 22.10.10, 14:01 -
Gleichnamige Dateien in verschiedenen Ordnern finden
Von Mahatmas im Forum C/C++Antworten: 4Letzter Beitrag: 28.11.07, 15:17 -
Excel - Nur Zahlen finden
Von ZidaneIX im Forum Office-AnwendungenAntworten: 3Letzter Beitrag: 06.06.06, 08:30 -
Gelöschte dateien finden und wiederherstellen mit VB!
Von alfa im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 16.04.05, 13:41





Zitieren

Login





