Torna al Thread
Public Sub SALVA_XLS()
Dim nome As String = ""
Dim CartellaDocumenti As DirectoryInfo
Dim FileDocumenti() As FileInfo
Dim strNomefileZIP As String = ""
Dim i As Integer
Dim strNomefile As String = ""
Try
strNomefileZIP = _XLS_FOLDER_PATH & "file.zip"
If File.Exists(strNomefileZIP) Then
File.Delete(strNomefileZIP)
End If
CartellaDocumenti = New DirectoryInfo(_XLS_FOLDER_PATH)
FileDocumenti = CartellaDocumenti.GetFiles
'Definisce la classe del controllo di CRC
Dim Crc As Crc32 = New Crc32
'Definisce lo stream di output dove scrivere l’archivio zip
Dim zippa As ZipOutputStream = New ZipOutputStream(System.IO.File.Create(strNomefileZIP))
zippa.SetLevel(9)
For i = 0 To FileDocumenti.Length - 1
strNomefile = FileDocumenti(i).Name
If InStr(strNomefile, "Unico_") = 0 Then
'leggi il file e riportalo su excel
'Definisce una variabile che contiene lo stream del file di origine
Dim fileaperto As FileStream = System.IO.File.OpenRead(_XLS_FOLDER_PATH & strNomefile)
'Definisce una variabile di tipo byte della grandezza pari alla lunghezza del ‘file originale
Dim contenitore() As Byte = New Byte(fileaperto.Length) {}
'Questa variabile è molto importante perchè definisce una nuova entry nel file dell’ archivio ZIP.
Dim z As ZipEntry = New ZipEntry("xls/" & strNomefile)
'Mette il contenuto dello stream in un contenitore di byte
fileaperto.Read(contenitore, 0, contenitore.Length)
'Imposta la data di compressione.
z.DateTime = DateTime.Now
'Imposta la dimensione del file originale
z.Size = fileaperto.Length + 1
'Chiude la variabile che contiene il lo stream del file originale
fileaperto.Close()
'Azzera la checksum
Crc.Reset()
'Imposta un nuovo valore per la checksum che dipende dai byte del file originale
Crc.Update(contenitore)
'Imposta il valore della CRC nella compressione
z.Crc = Crc.Value
'Inserisce nell’archivio ZIP una nuova entry
zippa.PutNextEntry(z)
'Effettua di fatto la compressione del file scrivendo nella nuova entry create al passo precedente il file comrpesso.
zippa.Write(contenitore, 0, contenitore.Length)
End If
Next
If _ID_STORICO = "1" Then
strNomefile = "Unico_Individuale.xls"
Else
strNomefile = "Unico_Consolidato.xls"
End If
'Definisce una variabile che contiene lo stream del file di origine
Dim fileaperto2 As FileStream = System.IO.File.OpenRead(_XLS_FOLDER_PATH & strNomefile)
'Definisce una variabile di tipo byte della grandezza pari alla lunghezza del ‘file originale
Dim contenitore2() As Byte = New Byte(fileaperto2.Length) {}
'Questa variabile è molto importante perchè definisce una nuova entry nel file dell’ archivio ZIP.
Dim z2 As ZipEntry = New ZipEntry(strNomefile)
'Mette il contenuto dello stream in un contenitore di byte
fileaperto2.Read(contenitore2, 0, contenitore2.Length)
'Imposta la data di compressione.
z2.DateTime = DateTime.Now
'Imposta la dimensione del file originale
z2.Size = fileaperto2.Length + 1
'Chiude la variabile che contiene il lo stream del file originale
fileaperto2.Close()
'Azzera la checksum
Crc.Reset()
'Imposta un nuovo valore per la checksum che dipende dai byte del file originale
Crc.Update(contenitore2)
'Imposta il valore della CRC nella compressione
z2.Crc = Crc.Value
'Inserisce nell’archivio ZIP una nuova entry
zippa.PutNextEntry(z2)
'Effettua di fatto la compressione del file scrivendo nella nuova entry create al passo precedente il file comrpesso.
zippa.Write(contenitore2, 0, contenitore2.Length)
'Chiude lo stream del file di output e lo svuota dopo aver fisicamente salvato nel file ZIP i risultato della compressione.
zippa.Finish()
'Rilascia la variabile
zippa.Close()
'RITORNO
Catch ex As IOException
Throw New Exception(ex.Message)
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Sub