Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich will ne methode, mit der ich mir den größten String raussuchen will und seinen länge abspeichern!
Am besten das ganze mit int[]!
Ich erzeuge mir mit dieser Schleife:
Code:
for (int k = 0; k < tv.size(); k++) {
// Namen der Personen
row = book.getSheetAt(j + 1).createRow(e);
cell = row.createCell(f++);
cell.setCellValue(((Vector) tv.get(k)).get(0).toString());
String personname = ((Vector) tv.get(k)).get(0).toString();
//maxCharactersinCell(personname);
//System.out.println(Short.parseShort(""+personname.length()));
//book.getSheetAt(j+1).setColumnWidth(Short.parseShort("0"), Short.parseShort(""+personname.length()));
// Datum
f = 2;
row = book.getSheetAt(j + 1).createRow(e);
cell = row.createCell(f++);
cell.setCellValue(formatDate(((Vector) tv.get(k)).get(3)
.toString()));
// Tätigkeit
row = book.getSheetAt(j + 1).createRow(e);
cell = row.createCell(f++);
cell.setCellValue(((Vector) tv.get(k)).get(2).toString());
// Dauer
row = book.getSheetAt(j + 1).createRow(e);
cell = row.createCell(f++);
cell.setCellValue(Double.parseDouble(((Vector) tv.get(k))
.get(4).toString()));
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
summe += StringUtils.toDouble(((Vector) tv.get(k)).get(4)
.toString());
e++;
f = 0;
}
Jeweils eine Zeile in einem ExcelSheet und dann die nächste!
D.h.
Name Datum Tätigkeit Stunden
Pinker 01 .08.2006 05 Oberflächen Gestaltung 8,9 <------ das hier wird erzeugt!
Jetzt will ich dass Excel dei Spaltenbreite automatisch anpasst!
Poi unterstützt das nicht, d.h. ich muss mir selbst was basteln!
Ich will jetzt die max länge von so einem Feld(string) und dei Spalten breite auch dann so setzen!
Hab mir gedacht ich lese die länge von einem String(Name) aus, schreib das in das erste Feld vom array (den setzte ich auf 4 da die spaltenanzahl nicht variiert) dann lese ich die länge des zweiten Feldes(Datum) aus, und schreibe es an stelle 2 im array, und dann hald noch immer die überprüfung ob der aktuelle wert im array kleiner is, wenn ja setzt ihn neu, wenn nicht, dann den alten drinnen lassen?
int[] stringlaengen = new int[4];
stringlaengen [0] = ((Vector) tv.get(k)).get(0).toString().length(); //Länge des Namen der Person
stringlaengen [1] = ((Vector) tv.get(k)).get(3).toString().length(); //Länge des Datums
stringlaengen [2] = ((Vector) tv.get(k)).get(2).toString().length(); //Länge der Tätigkeit
stringlaengen [3] = ((Vector) tv.get(k)).get(4).toString().length(); //länge der Dauer
Aber irgendwie muss ich ihm noch sagen, dass er, wenn er ein größeres findet den array überschreibt!
Vorschlag: mit temporären Variablen arbeiten und die dann am Ende der For-Schleife die jeweils größte String-Länge als Wert haben. Damit können die Spaltengrößen dann angepasst werden.
z.B. so:
Code:
// temporäre Variablen
int curNameLength = Integer.MIN_VALUE;
int curDateLength = Integer.MIN_VALUE;
int curTaskLength = Integer.MIN_VALUE;
int curDurationLength = Integer.MIN_VALUE;
for (int k = 0; k < tv.size(); k++) {
[...]
String personname = ((Vector) tv.get(k)).get(0).toString();
// wenn aktuelle Länge größer als bisher bekannte Länge, alten Wert ersetzen
if (personname.length() > curNameLength)
curNameLength = personname.length();
[...]
String datevalue = formatDate(((Vector) tv.get(k)).get(3).toString())
// wenn aktuelle Länge größer als bisher bekannte Länge, alten Wert ersetzen
if (datevalue.length() > curDateLength)
curDateLength = datevalue.length();
[... usw ...]
}
// Zellengröße anpassen
book.getSheetAt(j+1).setColumnWidth(Short.parseShort("0"), Short.parseShort(""+curNameLength));
book.getSheetAt(j+1).setColumnWidth(Short.parseShort("1"), Short.parseShort(""+curDateLength));
book.getSheetAt(j+1).setColumnWidth(Short.parseShort("2"), Short.parseShort(""+curTaskLength));
book.getSheetAt(j+1).setColumnWidth(Short.parseShort("3"), Short.parseShort(""+curDurationLength));
Vorschlag: mit temporären Variablen arbeiten und die dann am Ende der For-Schleife die jeweils größte String-Länge als Wert haben. Damit können die Spaltengrößen dann angepasst werden.