Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4

    [Java] Creazione file xls o affini

    Salve a tutti,

    ho cercato in lungo e in largo una soluzione a questo problema ma non ne sono venuto a capo.
    Vi spiego meglio: sto cercando di creare un programma che, tra le altre cose, legge dei file excel e ne crea uno nuovo unendo i precedenti.
    Come prima cosa ho provato a creare un file vuoto ma non riesco proprio a farlo e non riesco a capire se sbaglio il codice o le librerie.
    Per programmare uso l'IDE di NetBeans 7.4, e come librerie ho aggiunto sia le japiexcel che quelle di Apache POI.

    Qualcuno sa come fare?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da 3passi Visualizza il messaggio
    Come prima cosa ho provato a creare un file vuoto ma non riesco proprio a farlo e non riesco a capire se sbaglio il codice o le librerie.
    Probabilmente (sicuramente) sbagli qualcosa te ma senza vedere il codice che hai scritto non ti si può aiutare...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    Lo so che sbaglio qualcosa io, infatti così è scritto.

    Intanto mostro la funzione con le japiexcel.
    Riporto prima le librerie
    codice:
    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
     
    import jxl.*;
    import jxl.write.*;
    import jxl.write.Boolean;
    import jxl.write.Number;
    import jxl.write.biff.RowsExceededException
    E poi questa è la funzione del pulsante:
    codice:
    private void btnCreaActionPerformed(java.awt.event.ActionEvent evt) {                                        
            
            try {
                File exlFile = new File("C:/es.xls");
                WritableWorkbook writableWorkbook = Workbook.createWorkbook(exlFile);
     
                WritableSheet writableSheet = writableWorkbook.createSheet("Foglio1", 0);
     
               
                JLabel label = new JLabel("Label (String)");
                DateTime date = new DateTime(1, 0, new Date());
                Boolean bool = new Boolean(2, 0, true);
                Number num = new Number(3, 0, 9.99);
     
                
                writableSheet.addCell(num);
                writableSheet.addCell(date);
                writableSheet.addCell(bool);
                writableSheet.addCell(num);
     
                
                writableWorkbook.write();
                writableWorkbook.close();
     
            } catch (IOException e) {
                e.printStackTrace();
            } catch (RowsExceededException e) {
                e.printStackTrace();
            } catch (WriteException e) {
                e.printStackTrace();
            }
        }
    Il mio problema è nella riga:
    codice:
    WritableWorkbook writableWorkbook = Workbook.createWorkbook(exlFile);
    perchè non ha la funzione .createWorkbook() per cui non mi fa eseguire il file.

    Qualcuno sa come risolvere il problema?
    Ultima modifica di 3passi; 03-04-2014 a 16:54

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Non ho capito esattamente quale sia il problema.
    Quel codice, a prima vita, mi sembra corretto.
    L'unica cosa che noto è che tenti di scrivere nella "root" del disco fisso e questo potrebbe non essere permesso dal sistema operativo (specialmente da Win Vista in avanti). Ma questo lo si capirebbe dall'eventuale eccezione che viene lanciata.

    La gestione delle eccezioni la fai bene. Hai qualche eccezione? Se sì, postale...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    Devo fare una precisazione: io ho una classe principale che, appeno avvio, 'lancia' un JPanel (PnlGesioneOrdini).E' nel JPanel che cerco di creare il foglio excel dove ho scritto il codice postato prima.

    Comunque questo è l'errore che mi da:
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook
        at gestione.ordini.GestioneOrdini$1.run(GestioneOrdini.java:23)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:694)
        at java.awt.EventQueue$3.run(EventQueue.java:692)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
    Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 15 more
    Questo è il codice della classe principale:
    codice:
    public class GestioneOrdini {
    
    
        public static void main(String args[]) {
            /* questa classe la uso solo per lanciare la finestra 
                    'pnlGestioneOrdini */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new PnlGestioneOrdini().setVisible(true);
                }
            });
        }
        
    }
    Ps: ho provato anche a cambiare il percorso (ho provato a farglielo creare nel desktop) ma mi da lo stesso identico errore.

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Hai aggiunto i jar della libreria al tuo progetto? Pare di no...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    4
    Ho scaricato la libreria dal sito 'ufficiale': http://jexcelapi.sourceforge.net/

    Poi per aggiungerle ho fatto come scritto sulla guida di NetBeans: tasto dx sul progetto -> Libreries -> Add JAR/Folder -> (file jar dentro la cartella)

    Su questo IDE se scrivo qualcosa che non va me lo segna all'istante, ancora prima di lanciare il programma. Quando importo le librerie e quando scrivo il codice non mi segna niente, è solo quando lo lancio che dà problemi.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Ok. NetBeans fa le cose per bene, a meno che non vi sia qualche impostazione fatta a mano (in modo "errato") nelle proprietà del progetto.

    La domanda ora è: come stai "testando" l'applicazione? Ho il dubbio che tu stia copiando il JAR da qualche altra parte (e sarebbe corretto), senza portarti dietro la directory "lib" che c'è dentro alla "dist" assieme al JAR e che contiene, appunto, le librerie esterne...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.