View Full Version : [JAVA] output su documento excel
bobby1112
15-10-2009, 16:59
salve ragazzi ho questo problema devo restituire l' output di una matrice in una tabella di un documento excel si potrebbe fare grazie ciao.
banryu79
15-10-2009, 17:40
Con Googleho trovato questa libreria, se devi lavorare anche in futuro con Excel potrebbe farti comodo: JExcelAPI (http://jexcelapi.sourceforge.net/).
Qui c'è un tutorial. (http://www.andykhan.com/jexcelapi/tutorial.html#fundamentals)
Però dal tuo messaggio mi par di capire che ti serve veramente una funzionalità minima. Magari potresti stampare la tua matrice su un file di testo in formato csv (comma separated values): Excel è in grado di leggere files in questo formato.
bobby1112
20-10-2009, 00:45
ho dato un 'occhiata al tutorial ma ti dice solo come creare un nuovo file excel io dovrei prendere un file excel già esistente e modificarlo :help:
banryu79
20-10-2009, 10:00
ho dato un 'occhiata al tutorial ma ti dice solo come creare un nuovo file excel io dovrei prendere un file excel già esistente e modificarlo :help:
Mah, a dire il vero ho or ora buttato uno sguardo alle prime 20 righe del tutorial e spiega proprio come creare un oggetto Workbook partendo da un file excel già esistente... E subito ti spiega come si accede alle specifiche celle.
Tra l'altro leggendo l'"indice" del tutorial ci sono sezioni specifiche tipo "Copying and Modifying Spreadsheets", per dire.
Se hai dubbi più specifici l'unica è studiarsi un attimo le API della libreria. ;)
@EDIT
P.S.: a partire dalla home page di JExcelAPI trovi vari link di documentazione utili, vedi le FAQ.
Ciao, se posso, ti consiglio di usare la libreria apache poi (http://poi.apache.org/spreadsheet/quick-guide.html#NewWorkbook).
In questo link c'è veramente tutto quello che ti serve.
Ciao
p.s
Ti aggiungo un metodino per leggere un excel riga per riga
public String leggiRiga(int i){
HSSFRow row = sheet.getRow(i);
if (row == null) return null;
Iterator<HSSFCell> itCells = row.cellIterator();
String riga = "";
while(itCells.hasNext()){
String campo = "";
HSSFCell cella = itCells.next();
switch (cella.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
campo = cella.getRichStringCellValue().toString();
// System.out.println("STRING "+cella.getRichStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if(HSSFDateUtil.isCellDateFormatted(cella)){
campo = sdf.format(cella.getDateCellValue());
// System.out.println("DATA "+cella.getDateCellValue());
}else{
campo = String.valueOf(cella.getNumericCellValue());
// System.out.println("NUMERICO "+cella.getNumericCellValue());
}
break;
default:
campo = " ";
// System.out.println("NESSUNA");
break;
}
riga = riga + ";" +campo;
}
return riga.substring(1);
}
Considera che solitamente non hai bisogno dell'indice della riga perchè a partire dall'oggetto HSSFWorkbook puoi recuperare ad esempio il primo foglio excel
HSSFSheet sheet = workBook.getSheetAt(0);
e poi iterare direttamente sulle righe (e quindi poi sulle celle) con
Iterator<HSSFSheet> workBook.rowIterator() e poi Iterator<HSSFCell> itCells = row.cellIterator();
bye
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.