CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Alessio68 con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Leggere file Excel in Android

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Question

    Leggere file Excel in Android

    Ciao, da qualche giorno sto lavorando per leggere fogli di calcolo, in particolare nel formato xslx. L'IDE che uso è Eclipse Indigo.
    Sto usando le librerie POI Apache, con le quali già lavoravo in ambiente Java standard.
    Il problema è che il solo caricamento delle librerie (avvio dell'app con una sola activity e, per giunta, nullafacente) impalla Eclipse. In pratica, creo un progetto ex novo, inserisco le seguenti librerie di POI Apache:

    commons-logging-1.1.jar
    junit-3.8.1.jar
    log4j-1.2.13.jar

    dom4j-1.6.1.jar
    stax-api-1.0.1.jar
    xmlbeans-2.3.0.jar

    poi-3.8-beta1-20110307.jar
    poi-excelant-3.8-beta1-20110307.jar
    poi-ooxml-3.8-beta1-20110307.jar
    poi-ooxml-schemas-3.8-beta1-20110307.jar
    poi-scratchpad-3.8-beta1-20110307.jar


    e dopo circa un minuto di intenso caricamento ottengo:

    Unable to execute dex: Java heap space
    Java heap space

    Unhandled event loop exception
    Java heap space

    e questo in console:

    [2012-02-08 16:52:16 - Dex Loader] Unable to execute dex: Java heap space
    [2012-02-08 16:52:16 - ProvaXslxAndroid] Conversion to Dalvik format failed: Unable to execute dex: Java heap space


    Qualcuno ha idea di come possa risolverlo? Anche cambiando totalmente le librerie...

    Ciao e grazie

    Marco

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ok, pare che Apache POI utilizzi librerie non disponibili in Android, in alternativa si potrebbe essere ricorrere a JExcelApi (leggendo però solo file xsl, quinidi pre-2007) o trovare un porting delle librerie Apache.

    Mi chiudo il thread da solo :-P

  4. #3
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Quote Originariamente inviato da Marcolav Visualizza il messaggio
    Ok, pare che Apache POI utilizzi librerie non disponibili in Android, in alternativa si potrebbe essere ricorrere a JExcelApi (leggendo però solo file xsl, quinidi pre-2007) o trovare un porting delle librerie Apache.

    Mi chiudo il thread da solo :-P
    A me sembra piuttosto un problema di memoria heap. Hai provato ad incrementare la memoria dedicata alle applicazioni Java? Se non ricordo male bisogna agire sulla variabile d'ambiente JAVA_OPTS (-XX:MaxPermSize=... o qualcosa del genere) o forse si può agire direttamente in eclipse aggiungendo le necessarie opzioni al comando run.

  5. Il seguente Utente ha ringraziato maurilios per il post:

    Marcolav (09-02-12)

  6. #4
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Uhm, ho avviato Eclipse con heap differente, con -Xms 256m, ma non ha funzionato... Non vorrei imporre all'applicazione di acquisire heap maggiore in Android, non so se sia cosa buona. Ad esempio, certi telefoni potrebbero non avere la memoria che richiedo oppure chiuderebbe applicazioni in uso dell'utente.
    Tra l'altro su pc per usare queste librerie imposto la memoria a 512 MB...
    Ho provato aumentando l'heap space dell'emulatore a 64 (64 cosa? :-P), ma il problema resta. E poi cosa può voler dire aumentare l'heap dell'emulatore? Come potrò farlo sul sistema reale?
    Ma l'heap che si colma è quello dell'emulatore (non credo, durante l'avvio dell'applicazione da Eclipse resta sempre reattivo), quello dell'IDE (che effettivamente si impalla per tutta la durata del caricamento) o addirittura dell'intero sistema Mac?
    Tante domande :-P

    Comunque grazie della risposta, ho tolto qualche altro dubbio prima di abbandonare queste librerie :-)

  7. #5
    Senior Droid L'avatar di maurilios


    Registrato dal
    Dec 2009
    Messaggi
    328

    Ringraziamenti
    7
    Ringraziato 20 volte in 19 Posts
    Predefinito

    Secondo me il problema ce l'hai per il fatto che già Eclipse (che è in java) prende un botto di memoria; l'emulatore da' il colpo di grazia. Agendo sulle variabili d'ambiente (sui sistemi Windows, su MAC non so ma ci deve essere un metodo equivalente) vai ad agire sulla memoria che il tuo PC (o MAC) dedica alla JVM; non è detto quindi che sia l'applicazione in se ad utilizzare così tanta memoria. Il fatto che saturi con questa app e non con altre è comunque sintomatico...

  8. #6
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da maurilios Visualizza il messaggio
    Secondo me il problema ce l'hai per il fatto che già Eclipse (che è in java) prende un botto di memoria; l'emulatore da' il colpo di grazia. Agendo sulle variabili d'ambiente (sui sistemi Windows, su MAC non so ma ci deve essere un metodo equivalente) vai ad agire sulla memoria che il tuo PC (o MAC) dedica alla JVM; non è detto quindi che sia l'applicazione in se ad utilizzare così tanta memoria. Il fatto che saturi con questa app e non con altre è comunque sintomatico...
    Ho aumentato la memoria minima di Eclipse a 2GB: nei primi secondi dall'avvio della creazione del workspace è più reattivo, poi si blocca; ci mette semplicemente più tempo a darmi l'errore di heap esaurito.

    Comunque si, direi che è Eclipse, ma ad occhio e croce avrei lo stesso problema facendo tutte le operazioni di creazione manualmente

  9. #7
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ultima scoperta: l'importazione di tutte le librerie è necessaria solo per leggere file xslx, ossia quelli compressi introdotti da Excel 2007. I vecchi files xsl richiedono solo le librerie di base, quindi non ci sono problemi di heap

  10. #8
    Baby Droid


    Registrato dal
    Feb 2011
    Messaggi
    21

    Ringraziamenti
    8
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Si, ok, in tutti questi post ho sbagliato: si scrive xls ed xlsm :-P

LinkBacks (?)


Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy