Italian B4A leggere file excel nella memoria locale dispositivo

demetrio

Member
Licensed User
Ciao a tutti i partecipanti,
in sintesi se il file excel è nella cartella del package APK ed imposto il codice come segue:
upload_2017-5-8_17-48-43.png


Tutto funziona bene, scorro i record, cerco un qualsiasi elemento ed attivo il servizio di incoming call della libreria phone; la quale lasciata in background, la layout intercetta il numero chiamante, cerca nel file Excel e se trova il numero, porta in primo piano il layout direttamente sul cliente scelto.
Però volevo usare una cartella per il file Excel sempre dentro la memoria interna, “/SPConnect/LocalStore”, ma cambiando il codice così:

upload_2017-5-8_17-48-43.png


Non funziona più nulla, quando eseguo il codice, carica, installa la app e quando la lancia si chiude ancora prima di visualizzarla completa….
Ho inserito nella finestra manifest il codice che segue, ho fatto un log sull’abilitazione ed è presente….
“Manifest: AddPermission(android.permission.READ_EXTERNAL_STORAGE)”
Log su File.ExternalReadable = true
Non riesco a venirne a capo, un aiutino………?
Grazie Demetrio.
 

Star-Dust

Expert
Licensed User
Longtime User
Il codice é corretto e dovrebbe funzionare. Io l'ho pure provato e funziona bene. Forse la cartella che usi é vuota o peggio non hai creato le cartelle.

Ti allego il codice che ho usato io.

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.

End Sub

Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.
    Dim workbook1 As ReadableWorkbook
    Dim Sheet As ReadableSheet
    Dim LastRecord As Int
End Sub

Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    'Activity.LoadLayout("Layout1")
    If File.Exists(File.DirRootExternal,"SPConnect")=False Then File.MakeDir(File.DirRootExternal,"SPConnect")
    If File.Exists(File.DirRootExternal & "/SPConnect","LocalStore")=False Then File.MakeDir(File.DirRootExternal & "/SPConnect","LocalStore")
    File.Copy(File.DirAssets,"test.xls",File.DirRootExternal & "/SPConnect/LocalStore","test.xls")
 
    'workbook1.Initialize(File.DirAssets,"Test.xls")
    workbook1.Initialize(File.DirRootExternal & "/SPConnect/LocalStore","Test.xls")
    Sheet = workbook1.GetSheet(0)
    LastRecord=Sheet.RowsCount
    Log(LastRecord)
    ToastMessageShow(LastRecord,False)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Ti allego anche il progetto zippato che puoi provare sul tuo dispositivo.

P.S. Non ho aggiunto nessun permesso nel manifest
 

Attachments

  • Excel.zip
    13.6 KB · Views: 379
Last edited:

demetrio

Member
Licensed User
Stardust, mi hai fatto capire.... io ho utilizzato una cartella predefinita creata dal servizio SPConnect di Microsoft che aggancia il servizio SharePoint per i gruppi di lavoro...
quando ho provato il tuo codice, ottenevo lo stesso risultato, cioe non caricava la pagina, ma il fatto che mi hai assicurato che funzionava, ho provato nel tuo codice a creare "SSPConnect" aggiungendo una "S" e quindi un indirizzo folder diverso, e tutto funziona!!!!!!
praticamente la cartella locale di SPConnect, anche se sulla root principale, evidentemente non è leggibile.... anche se credo ci deve essere il trucco, altrimenti non ha senso che la app SPConnect ti permetta di copiare i file in una cartella locale.... mah...

comunque sei stato grande, mi hai illuminato.
 

demetrio

Member
Licensed User
approfitto della tua esperienza,
se volessi agganciare il file Excel che pero è su un storage su internet, posso farlo?
 

Star-Dust

Expert
Licensed User
Longtime User
Se per "agganciare" vuoi dire che vuoi lavorare su un file che non si trova sul dispositivo, non é possibile farlo direttamente.
Ma prima devi scaricarlo su una cartella del dispositivo e poi lavorarci.

Per scaricare un file da un sito puoi usare la libreria OkhttpUltil2 (https://www.b4x.com/android/forum/threads/download-huge-files-with-httputils2.30220/#content)

se si trova su un Cloud usa la libreria per DropBox o GoogleDrive che trovi facilmente cercando sul forum nella sezione Librerie.
 
Top