Jambalaya Admin
Numero di messaggi : 33 Età : 42 Località : Bios Data d'iscrizione : 21.02.09
| Titolo: Oggi combattiamo con i file *.xls Lun Giu 22, 2009 4:18 pm | |
| Bene come sempre il lavoro mi ha spinto verso una nuova conquista, il formato *.xls , quello dei file Excel insomma per parlare come mangiamo. Ecco cosa ho trovato ^_^ Esempietto base usando JExcel e il jxl.jar L'esempio che porto serve a creare un nuovo documento e a scrivere i dati in due diversi fogli dello stesso. Iniziamo con l'import delle parti necessarie: - Codice:
-
import java.io.*; import jxl.*; import java.util.*; import jxl.Workbook; import jxl.write.DateFormat; import jxl.write.Number;
import jxl.write.*; import java.text.SimpleDateFormat;
Veniamo ora alla creazione del metodo base: - Codice:
-
class create { public static void main(String[] args) { try { // Il nome del file in oggetto String nomeFile = "input.xls"; //impostazioni base per l'apertura del documento WorkbookSettings ws = new WorkbookSettings(); ws.setLocale(new Locale("en", "EN")); WritableWorkbook workbook = Workbook.createWorkbook(new File(nomeFile), ws); //Aggiunta di due fogli WritableSheet foglio1 = workbook.createSheet("Foglio1", 0); WritableSheet goglio2= workbook.createSheet("Foglio2", 0); //richiamo il metodo per la scrittura dei dati writeDataSheet(foglio1); //richiamo il metodo per l'inserimento di un immagine writeImageSheet(foglio2); //compilo il foglio e chiudo workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } }
} Creiamo ora il metodo per aggiungere dei dati al primo foglio. Settando prima le impostazioni del carattere e poi aggiungendovi una cella. - Codice:
-
private static void writeDataSheet(WritableSheet foglio) throws WriteException {
//Formattiamo il carattere di scrittura WritableFont carattere= new WritableFont(WritableFont.ARIAL,10, WritableFont.BOLD); WritableCellFormat formatoCelle= new WritableCellFormat(carattere); formatoCelle.setWrap(true);
//creiamo un etichetta e scriviamo una data in una cella Label label = new Label(0,0,"Data",formatoCelle); foglio.addCell(label); WritableCellFormat cf1 =new WritableCellFormat(DateFormats.FORMAT9);
DateTime data = new DateTime(0,1,new Date(), cf1, DateTime.GMT);
foglio.adCell(data); } nela definizione degli oggetti da inserire nelle celle i primi due numeri indicano il posizionamento della cella stessa Colonna-Riga Vediamo come si possono aggiungere inoltre delle immagini o un link su un file *.xls - Codice:
-
private static void writeImageSheet(WritableSheet foglio) throws WriteException { //Creiamo l'etichetta e attacchiamo l'imagine ad un foglio Label label = new Label(0, 0, "Image"); foglio.addCell(label); WritableImage immagine = new WritableImage(0, 3, 5, 7, new File("image.png")); foglio.addImage(immagine);
//creiamo un etichetta e aggiungiamo un hyperlink al foglio label = new Label(0,15, "HYPERLINK"); foglio.addCell(label); Formula formula = new Formula(1, 15, "HYPERLINK(\"http://www.indirizzo.com", "\"boh\")"); foglio.addCell(formula); } Nel caso si volessero inserire dei diversi formati all'interno delle celle sarà sufficente specificarne il tipo come ad esempio: - Codice:
-
WritableCellFormat formatoFloat= new WritableCellFormat(NumberFormats.FLOAT); oppure è possibile specificare un formato come ad esempio: - Codice:
-
NumberFormat formatoNumerico= new NumberFormat("#.###"); WritableCellFormat formatoCustom= new WritableCellFormat(formatoNumerico); Si possono inoltre inserire delle formule, indicando la cella in cui inserire il risultato, e le caselle in cui prendere i dati: - Codice:
-
Formula formula = new Formula(4,3, "E1+E2"); Per ora è tutto, se trovate altro aggiungete sotto! EDIT: Aggiungo il necessario per creare un *xls con La libreria della Apache, poi aprofondisco. - Codice:
-
HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based. HSSFRow row = sheet.createRow((short)0); // Create a cell and put a value in it. HSSFCell cell = row.createCell((short)0); cell.setCellValue(1);
// Or do it on one line. row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("This is a string"); row.createCell((short)3).setCellValue(true);
// Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close();
| |
|