
Come comprimere i file Excel in ZIP in C#
Gli ZIP archivi possono contenere più file, comunemente usati per ridurre la dimensione dei file. Allo stesso tempo, ogni file viene compresso individualmente, il che aiuta a estrarli e ad aggiungere nuovi senza comprimere o decomprimere l’intero archivio Zip. Oggigiorno, l’uso di Excel (XLSX o XLS) fogli di calcolo è aumentato nelle attività aziendali quotidiane. A volte, i file Excel possono diventare piuttosto grandi, ma possiamo ridurne la dimensione comprimendoli in un archivio ZIP. In questo articolo, imparerai come comprimere i file Excel in un archivio ZIP in C# senza scrivere codice complesso. Inoltre, vedrai come ottenere il report dei progressi di compressione mentre si comprimono i grandi file excel.
I seguenti punti saranno trattati in questo articolo:
- C# .NET API per comprimere i file Excel in un archivio ZIP
- Aggiungi file XLS o XLSX a ZIP in C#
- Ottieni il rapporto sul progresso della compressione in C#
C# .NET API per comprimere i file Excel in un archivio ZIP
Per comprimere i file Excel in un archivio ZIP, utilizzeremo Aspose.ZIP for .NET. L’API consiste in numerose funzionalità di archiviazione. Pertanto, è possibile scaricare il DLL o installarlo utilizzando NuGet.
Install-Package Aspose.ZIP
Aggiungi file XLS o XLSX a ZIP in C#
Supponiamo di avere più file Excel (XLSX o XLS) da comprimere in un’archivio ZIP. Puoi scegliere uno dei seguenti metodi per svolgere il lavoro.
C# comprimi i file Excel in ZIP utilizzando FileStream
In questo modo, useremo la FileStream classe per aggiungere file all’archivio ZIP chiamando la Archive.CreateEntry(String, FileStream) funzione.
I seguenti sono i passaggi per comprimere fogli di calcolo Excel in ZIP utilizzando FileStream:
- Per prima cosa, crea un oggetto della classe FileStream per l’archivio ZIP di output.
- In secondo luogo, crea oggetti di FileStream per i file Excel da comprimere.
- Then, initialize Archive class and pass it an instance of ArchiveEntrySettings class.
- Dopo di che, aggiungi FileStream oggetti creati nel passo 2 utilizzando Archive.CreateEntry metodo.
- Infine, chiama Archive.Save metodo e utilizza gli oggetti di FileStream(creati nel passo 1) e l’istanza di ArchiveSaveOptions come parametri.
Il seguente codice mostra come comprimere i file Excel in ZIP utilizzando FileStream.
// Crea FileStream per l'archivio ZIP di output
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// File1 da comprimere
using (FileStream excel_file1 = File.Open("data1.xlsx", FileMode.Open, FileAccess.Read))
{
// File2 da comprimere
using (FileStream excel_file2 = File.Open("data2.xlsx" , FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
//Aggiungi file all'archivio.
archive.CreateEntry("data1.xlsx", excel_file2);
archive.CreateEntry("data2.xlsx", excel_file2);
// Comprimi i file in un archivio ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "Two files are compressed in this archive." });
}
}
}
}
C# comprime i file XLSX o XLS in ZIP utilizzando FileInfo
In alternativa, possiamo utilizzare la FileInfo classe per aggiungere file all’archivio ZIP. In questo caso, i file verranno caricati utilizzando la FileInfo classe e aggiunti all’archivio ZIP chiamando il metodo Archive.CreateEntry(String, FileInfo).
Si prega di seguire i passaggi indicati di seguito:
- Crea un oggetto della classe FileStream per l’archivio ZIP di output.
- Crea oggetti di FileInfo per i file Excel da comprimere.
- Inizializza Archive classe e passale un’istanza della classe ArchiveEntrySettings.
- Aggiungi FileStream oggetti creati nel passo 2 utilizzando Archive.CreateEntry metodo.
- Per comprimere i file, chiamare Archive.Save metodo e utilizzare gli oggetti di FileStream(creati nel passo 1) e l’istanza di ArchiveSaveOptions come parametri.
Il seguente codice mostra come comprimere file XLSX o XLS in ZIP utilizzando FileInfo.
//Crea FileStream per l'archivio ZIP di output
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// File da comprimere
FileInfo fi1 = new FileInfo("data1.xlsx");
FileInfo fi2 = new FileInfo("data2.xlsx");
using (var archive = new Archive())
{
//Aggiungi file all'archivio
archive.CreateEntry("data1.xlsx", fi1);
archive.CreateEntry("data2.xlsx", fi2);
// Comprimi i file in un'archivio ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Comprimi i fogli di calcolo Excel in ZIP utilizzando il percorso del file
Il modo più semplice è aggiungere un percorso di file Excel direttamente al Archive.CreateEntry metodo:
I seguenti sono i passaggi per comprimere fogli di lavoro Excel in ZIP utilizzando un percorso file:
- Inizializza Archive classe.
- Aggiungi file excel utilizzando Archive.CreateEntry metodo.
- Per comprimere i dati, chiamare Archive.Save metodo e utilizzare il nome del file di output come parametro.
Il seguente codice dimostra come comprimere file di fogli di calcolo Excel in ZIP utilizzando un percorso di file.
//Crea un'istanza della classe Archive
using (var archive = new Archive())
{
//Aggiungere file utilizzando il metodo Archive.CreateEntry
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
//Zip the files.
archive.Save("result_archive.zip");
}
Ottieni il rapporto sul progresso della compressione in C#
In caso di file Excel di grandi dimensioni, il processo di compressione potrebbe richiedere molto tempo per essere completato. Per gestirlo, la C# ZIP compression library fornisce l’evento [CompressionProgressed] per pubblicare aggiornamenti continuamente.
I seguenti sono i passaggi per ottenere il report sul progresso della compressione in C#:
- Crea un oggetto di FileStream per il grande file Excel.
- Inizializza Archive classe e passale un’istanza della classe ArchiveEntrySettings.
- Ottieni un oggetto di ArchiveEntry dalla chiamata al metodo Archive.CreateEntry.
- Attach [CompressionProgressed] to the ArchiveEntry object.
- Call Archive.Save e usa il nome del file di output come parametro.
Il seguente esempio di codice mostra come ottenere il rapporto sul progresso della compressione in C#:
// Create large Excel file
using (FileStream source = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings())))
{
// Aggiungi e file all'archivio
ArchiveEntry entry = archive.CreateEntry("huge.bin", source);
int percentReady = 0;
// Allega l'evento CompressionProgress
entry.CompressionProgressed += (s, e) =>
{
int percent = (int)((100 * (long)e.ProceededBytes) / source.Length);
if (percent > percentReady)
{
Console.WriteLine(string.Format("{0}% compressed", percent));
percentReady = percent;
}
};
// Zip il file
archive.Save(zipFile);
}
}
Ottieni una Licenza Gratuita
Puoi ottenere una free temporary license per testare l’API senza limitazioni di valutazione.
Conclusione
In questo articolo, hai imparato come comprimere file Excel in un archivio ZIP in C# utilizzando una C# ZIP compression library. Oltre a ciò, hai acquisito sufficiente conoscenza su come ottenere un rapporto di avanzamento della compressione durante la compressione di grandi file excel. Puoi visitare la documentation per esplorare altre funzionalità dell’API di compressione ZIP in C#.
Ask a question
Puoi farci sapere le tue domande o richieste nel nostro forum.