Oggi vi segnaliamo un progetto, disponibile in versione Alpha, realizzato dal nostro moderatore e autore Andrea Cappellotto, che in quattro e quattr’otto ha realizzato un componente che ci permetterà di creare file compatibili con Excel del pacchetto Microsoft Office e presto anche Calc del concorrente Open Office: RSSheet!
Il progetto, nonostante sia ancora in versione Alpha, è già operativo e funzionante ed è disponibile sul canale github di Andrea. L’obiettivo, oltre a quello di proporvi un interessante oggetto da integrare nelle vostre applicazioni iOS, è ora quello di trovare developers iPhone e iPad appassionati che abbiano voglia di unirsi a lui e lavorare insieme per estendere le funzionalità, fino magari a creare un vero e proprio XLS Reader.
Come integrare e usare RSSheet (Raaden Spread Sheet) nelle nostre app
Vediamo brevemente come integrare e utilizzare RSSheet all’interno dei nostri progetti XCode. Per prima dovremo scaricare tutto il necessario, che trovate direttamente al Seguente indirizzo.
Scaricato il file .zip estraiamo il suo contenuto e trascinamolo dentro il nostro progetto (ricordatevi di copiare i file all’interno del progetto con la spunta su “copy items into destination group & file folder).
Fatto questo non dovremo far altro che importare “RSworkBook” sul vostro file di intestazione .h e creare il nostro bellissimo workBook!!:)
Ecco un semplice esempio di come si crea un foglio di calcolo con RSSheet:
RSworkBook * folder = [[RSworkBook alloc] init];
folder.author = @"andrea cappellotto";
folder.version = 1.2;
RSworkSheet * sheet = [[RSworkSheet alloc] initWithName:@"prova"];
RSworkSheetRow * row = [[RSworkSheetRow alloc] initWithHeight:20];
;
;
[sheet addWorkSheetRow:row];
;
RSworkSheetRow * row2 = [[RSworkSheetRow alloc] initWithHeight:24];
RSStyle * styleRow2 = [[RSStyle alloc] init];
styleRow2.font = [UIFont systemFontOfSize:24];
styleRow2.size = 24;
styleRow2.color = [UIColor redColor];
styleRow2.alignmentV = RSStyleTopAlign;
styleRow2.alignmentH = RSStyleMiddleAlign;
row2.style = styleRow2;
[row2 addCellNumber:100];
[row2 addCellData:[NSDate date]];
[sheet addWorkSheetRow:row2];
[row2 release];
[styleRow2 release];
[folder addWorkSheet:sheet];
[sheet release];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
[folder writeWithName:@"prova" toPath:documentsDir];
[folder release];
Come vedete l’implementazione è davvero molto semplice. Abbiamo innanzitutto creato una cartella di lavoro, quindi abbiamo settato autore e versione.
Successivamente abbiamo creato un foglio di lavoro con il nome del foglio. Abbiamo creato una riga in cui potremo aggiungere le nostre celle, che al momento potranno essere di tre tipi (stringa, numero e data). Ad ogni riga potremmo inoltre impostare uno stile (tutte le celle prenderanno quello stile) oppure, volendo, potremmo specificare lo stile di una singola cella. Se non viene specificato nessuno stile verrà utilizzato quello di default. A questo punto non ci resta che aggiungere le righe al foglio di lavoro e il foglio di lavoro alla cartella di lavoro.
Il metodo:
[folder writeWithName:@"prova" toPath:documentsDir];
ha il compito infine di creare il file e salvarlo con estensione .xls sulla cartella specificata.
Semplice vero?
Ecco il risultato finale:
Conclusioni
Al momento la versione Alpha di RSSheet è compatibile solo con MS Office. Andrea è riuscito a creare una versione compatibile con entrambi gli editor (Excel e Calc) ma questo richiede di salvare il file in formato .xml e questo può causare qualche problema, in quanto non sempre il programma utilizzato per aprire i file .xml è uno di questi due. Se qualcuno avesse qualche consiglio, si faccia avanti!! 🙂
PS: un sentito ringraziamento a dark_vivi che mi ha dato un grosso aiuto con i test della prima release del progetto.
14 Responses to “RSSheet: una classe alpha per scrivere fogli di calcolo con le nostre applicazioni iPhone e iPad”
22 Settembre 2011
milonetcomplimentissimi.. gran lavoro!!! appena ho un attimo giuro che lo provo!
22 Settembre 2011
Andrea Cappellottograzie mille!! spero in qualche aiuto in modo da poter miglioralo…:)
5 Ottobre 2011
ClaudioHo provato ad utilizzare RSSheet per il mio progetto ma dopo aver eseguito tutta la mia parte custom (ho messo degli NSLog, la parte mia la esegue tutta senza problemi, mi da questo errore e crasha:
2011-10-05 12:05:42.853 Argo 2.0 beta[1869:207] *** -[CFString release]: message sent to deallocated instance 0x4c53f90
premetto che, a quanto dicono i log subito prima del crash, il salvataggio dell’xls va a buon fine
2011-10-05 12:05:42.852 Argo 2.0 beta[1869:207] salvataggio corretto
2011-10-05 12:05:42.853 Argo 2.0 beta[1869:207] path:/Users/newsid/Library/Application Support/iPhone Simulator/4.3.2/Applications/CF432C6A-7257-40FC-98A7-EEF687D6CAC4/Documents/iArgo Export.xls
5 Ottobre 2011
Andrea Cappellottociao, se crasha dopo aver salvato il file probabilmente non riguarda la classe. Comunque quell’errore riguarda il release su una stringa, controllo il codice per vedere se qualche release sbagliato! grazie per la segnalazione! 😉
6 Ottobre 2011
ClaudioMettendo da parte il release con crash per ora.. Domanda stupida. una volta salvato, come prendo il riferimento al file? nel mio progetto dovrei salvare la mia struttura dati in un file excel per poi inviarlo tramite email (sempre dall’app)
Claudio
7 Ottobre 2011
Andrea Cappellottoquando salvi il file viene salvato nella cartella Documents della tua app. Ti basta ottenere il path della cartella aggiungerci il nome del file e hai il percorso del file creato
8 Ottobre 2011
mariottoNon potresti salvare i dati formattati in csv?
Cmq il progetto è interessante…appena ho due min gli do un’occhiata
12 Ottobre 2011
ClaudioNovità sul release della stringa? ma solo a me da questo problema?
Claudio
12 Ottobre 2011
Claudiofacendo delle prove (commentando alcuni release) ho notato che non crasha se commento
[dateString release];
nel metodo
– (BOOL)writeWithName:(NSString*)name toPath:(NSString*)path
del file RSWorkBook.m
Claudio
12 Ottobre 2011
Andrea Cappellottociao, appena ho un attimo controllo.. cmq può essere che sia quel release a creare problemi, grazie per i test!! hai provato poi il file se viene letto correttamente?? ho provato ad aggiungere alcune librerie in c che creano file xls ma alla fine non ho trovato una soluzione valida.. questa sembra essere l’unica plausibile…
12 Ottobre 2011
Andrea Cappellottosi, potresti farlo in csv, ma il csv usa diverse codifiche (, o 😉 quindi è un problema, e poi le personalizzazioni sono poche… per questo avevo pensato agli xls
13 Ottobre 2011
Claudioil file lo salva ma poi ho trovato problemi nella lettura.
-Direttamente su iphone (tramite web view) mi dice formato file non valido (o qualcosa del genere non ricordo)
-Su mac l’icona rimane bianca (invece di dare la classica icona dei file excel) e se provo ad aprirlo si presenta una finestra dove dando ok mostra il file tutto su una colonna (in piu’ righe), stampato come se fosse un file di testo, quindi con tutti i tag xml.
-Su MS Office (da windows) appena apro il file mi dice che il formato è diverso dall’estensione, pero’ lo visualizza correttamente.
13 Ottobre 2011
Andrea Cappellottociao, allora se vuoi continuiamo qui la discussione
http://forum.devapp.it/showthread.php?2759-ma-un-framework-per-i-fogli-ti-calcolo
cmq io l’ho testata solo con MSOffice, su mac funziona senza nessun problema, su win invece da quell’errore.. pensare di caricarla su webview è impossbilie.. bisogna fare un parser apposito.. il problema resta la compatibilità con altri lettori… anche perchè la soluzione a cui ho pensato non è quella giusta, ma per il momento è l’unica che ho trovato..
13 Ottobre 2011
ClaudioMi sono iscritto ora al forum (newsid), sono in attesa di attivazione.
Comunque i normali file xls generati da excel (o calc) vengono visualizzati correttamente nelle web view.
Se mi viene in mente qualcosa scrivo sul topic del forum dopo l’attivazione dell’account