Ho avuto bisogno di esportare dei dati in formato .Csv da un’applicazione realizzata totalmente per il browser . Come il solito LotusScipt mi è stato d’aiuto: ecco i passi che ho fatto:
- creo una view con i dati che vuoi esportare e la chiamo “esportazione”
- crei un agent da invocare dall’applicazione che fisicamente esegue l’export (chiamiamolo esportaCsv)
- nell’applicazione inserisco un link in questo formato /folder/app.nsf/esportacsv?openagent che si apra in una nuova finestra dove esportacsv è il nome dell’agent
A questo punto l’agent:
Dim s As New NotesSession Dim questodb As NotesDatabase Dim vec As NotesViewEntryCollection Dim view As NotesView Dim nomevista As String Dim entry As NotesViewEntry Dim nomefile As String Dim strn as string nomevista = "esporta" 'inserisci qui il nome della vista nomefile = "esportazione.csv" 'inserisci qui il nome del file .csv Set questodb = s.CurrentDatabase Set view = questodb.GetView(nomevista) Set vec = view.AllEntries Set entry = vec.GetFirstEntry 'HTTP HEADER: questo è importante perchè segnala al browser di utilizzare i dati che gli arrivano come allegato da scaricare Print "Content-Disposition: attachment; filename=" & nomefile Print "Content-Type: application/octet-stream" strn = "" 'intestazioni delle colonne ForAll c In view.Columns strn = strn & |"| & c.Title & |",| End ForAll 'campi del csv Print strn strn = "" While Not (entry Is Nothing) ForAll cols In entry.ColumnValues cols = |"| & cols & |",| strn = strn & cols End ForAll Print strn strn = "" Set entry = vec.GetNextEntry(entry) Wend
come potete vedere essenzialmente fa una serie di print ma siccome all’inizio esegue questo
Print "Content-Disposition: attachment; filename=" & nomefile
il browser interpreta il tutto come file da scaricare
0 commenti