Lettura ed elaborazione file da cartella FTP

' Il seguente script è un esempio di come si possono elaborare i file (Excel in questo caso) contenuti in una cartella FTP, con cancellazione dopo l'elaborazione

dim ftpuser as string=<utente>
dim ftppw as string=<password>
dim folder as string="ftp://xx.xx.xx.xx/cartella"

' Legge la directory
dim ftpRequest as System.Net.FtpWebRequest = System.Net.WebRequest.Create(folder)
ftpRequest.Credentials =new System.Net.NetworkCredential(ftpuser,ftppw)
ftpRequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory
Dim response as System.Net.FtpWebResponse = ftpRequest.GetResponse()
dim streamReader as System.Io.StreamReader = new System.Io.StreamReader(response.GetResponseStream())

' scarica l'elenco dei file
dim files as new DBArray()

dim fn as string = streamReader.ReadLine()
while not empty(fn)
    files.add(fn)
    fn = streamReader.ReadLine()
End While

streamReader.Close()

' esamina tutti i file
dim i,j as integer
for i=1 to files.size
    if lower(system.Io.Path.getextension(files(i)))=".xlsx"
        ' è un file Excel: lo scarica
        dim FTP as System.Net.WebClient
        FTP = new System.Net.WebClient
        FTP.Credentials = new System.Net.NetworkCredential (ftpuser,ftppw)
        Dim fileData As Byte() = FTP.DownloadData(folder+"/"+files(i))
        
        fn=form.Getsession().GetLocalTempFileName(".xlsx")
        Dim f As System.io.FileStream = System.IO.File.Create(fn)
        f.Write(fileData, 0, fileData.Length)
        f.Close()

        Dim x as New qwexcel()
        x.Open(fn)
        x.SetActiveWorksheet(x.GetWorkbook.Worksheets(0).Name)
        For j = 2 To 100000
            dim idGestionale as string=x.ReadString(j,16)
            dim esito as string=x.ReadString(j,6)
            dim errore as string=x.ReadString(j,7)

            if not empty(idGestionale)
                form.FindControl("MultilineTextField1").value+=idGestionale+": "+esito+if(not empty(errore)," "+errore,"")+vbCr
            Else
                Exit For
            End If
        Next
        x.Close()

        ' elimina il file
        ftpRequest = System.Net.WebRequest.Create(folder+"/"+files(i))
        ftpRequest.Method = System.Net.WebRequestMethods.Ftp.DeleteFile
        ftpRequest.Credentials = new System.Net.NetworkCredential (ftpuser,ftppw)
        response = ftpRequest.GetResponse()
        response.Close()
    End If
next