
Jak kompresować pliki Excel do ZIP w C#
Archiwa ZIP mogą zawierać wiele plików, powszechnie używanych do zmniejszania rozmiaru plików. Jednocześnie każdy plik jest kompresowany indywidualnie, co pomaga wyodrębnić je i dodać nowe bez kompresowania lub dekompresowania całego archiwum Zip. Obecnie w codziennej działalności biznesowej wzrosło wykorzystanie arkuszy kalkulacyjnych Excel (XLSX lub XLS). Czasami pliki Excel mogą być dość duże, ale możemy zmniejszyć ich rozmiar, kompresując je do archiwum ZIP. W tym artykule dowiesz się, jak skompresować pliki Excel do archiwum ZIP w języku C# bez pisania skomplikowanego kodu. Oprócz tego dowiesz się, jak uzyskać raport o postępie kompresji podczas kompresowania dużych plików Excela.
W tym artykule zostaną omówione następujące punkty:
- API C# .NET do kompresji plików Excel do archiwum ZIP
- Dodaj pliki XLS lub XLSX do ZIP w C#
- Uzyskaj raport o postępie kompresji w języku C#
API C# .NET do kompresji plików Excel do archiwum ZIP
Aby skompresować pliki Excel do archiwum ZIP, użyjemy Aspose.ZIP for .NET. API składa się z wielu funkcji archiwizacji. Dlatego możesz pobrać bibliotekę DLL lub zainstalować ją za pomocą NuGet.
Install-Package Aspose.ZIP
Dodaj pliki XLS lub XLSX do ZIP w C#
Załóżmy, że masz wiele plików Excel (XLSX lub XLS) do skompresowania do archiwum ZIP. Możesz wybrać jeden z poniższych sposobów wykonania zadania.
C# kompresuje pliki Excel do formatu ZIP za pomocą FileStream
W ten sposób wykorzystamy klasę FileStream do dodania plików do archiwum ZIP wywołując funkcję Archive.CreateEntry(String, FileStream).
Poniżej przedstawiono kroki kompresji arkuszy kalkulacyjnych Excel do formatu ZIP za pomocą FileStream:
- Najpierw utwórz obiekt klasy FileStream dla wyjściowego archiwum ZIP.
- Po drugie, utwórz obiekty FileStream dla plików Excel, które mają zostać skompresowane.
- Następnie zainicjuj klasę Archive i przekaż jej instancję klasy ArchiveEntrySettings.
- Następnie dodaj obiekty FileStream utworzone w kroku 2, używając metody Archive.CreateEntry.
- Na koniec wywołaj metodę Archive.Save i użyj obiektów FileStream(utworzonych w kroku 1) oraz instancji ArchiveSaveOptions jako parametrów.
Poniższy kod pokazuje, jak skompresować pliki Excel do formatu ZIP przy użyciu FileStream.
// Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// Plik1 do skompresowania
using (FileStream excel_file1 = File.Open("data1.xlsx", FileMode.Open, FileAccess.Read))
{
// Plik2 do skompresowania
using (FileStream excel_file2 = File.Open("data2.xlsx" , FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
//Dodaj pliki do archiwum.
archive.CreateEntry("data1.xlsx", excel_file2);
archive.CreateEntry("data2.xlsx", excel_file2);
// Skompresuj pliki do archiwum ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "Two files are compressed in this archive." });
}
}
}
}
C# kompresuje pliki XLSX lub XLS do ZIP przy użyciu FileInfo
Alternatywnie możemy użyć klasy FileInfo w celu dodania plików do archiwum ZIP. W tym przypadku pliki zostaną wczytane przy pomocy klasy FileInfo i dodane do archiwum ZIP poprzez wywołanie metody Archive.CreateEntry(String, FileInfo).
Wykonaj kroki wymienione poniżej:
- Utwórz obiekt klasy FileStream dla wyjściowego archiwum ZIP.
- Utwórz obiekty FileInfo dla plików Excel, które mają zostać skompresowane.
- Zainicjuj klasę Archive i przekaż jej instancję klasy ArchiveEntrySettings.
- Dodaj obiekty FileStream utworzone w kroku 2 przy użyciu metody Archive.CreateEntry.
- Aby skompresować pliki, wywołaj metodę Archive.Save i użyj obiektów FileStream(utworzonych w kroku 1) oraz instancji ArchiveSaveOptions jako parametrów.
Poniższy kod pokazuje, jak skompresować pliki XLSX lub XLS do formatu ZIP przy użyciu FileInfo.
//Utwórz FileStream dla wyjściowego archiwum ZIP
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// Pliki do skompresowania
FileInfo fi1 = new FileInfo("data1.xlsx");
FileInfo fi2 = new FileInfo("data2.xlsx");
using (var archive = new Archive())
{
//Dodaj pliki do archiwum
archive.CreateEntry("data1.xlsx", fi1);
archive.CreateEntry("data2.xlsx", fi2);
// Skompresuj pliki do archiwum ZIP
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Kompresuj arkusze kalkulacyjne Excel do formatu ZIP, korzystając ze ścieżki pliku
Najprostszym sposobem jest dodanie ścieżki pliku Excel bezpośrednio do metody Archive.CreateEntry:
Poniżej przedstawiono kroki kompresji arkuszy kalkulacyjnych Excel do formatu ZIP przy użyciu ścieżki pliku:
- Zainicjuj klasę Archiwum.
- Dodaj pliki Excela za pomocą metody Archive.CreateEntry.
- Aby skompresować dane należy wywołać metodę Archive.Save i jako parametr podać nazwę pliku wyjściowego.
Poniższy kod ilustruje sposób kompresowania plików arkuszy kalkulacyjnych programu Excel do formatu ZIP przy użyciu ścieżki pliku.
//Utwórz instancję klasy Archive
using (var archive = new Archive())
{
//Dodaj pliki za pomocą metody Archive.CreateEntry
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
//Spakuj pliki.
archive.Save("result_archive.zip");
}
Uzyskaj raport o postępie kompresji w języku C#
W przypadku dużych plików Excel proces kompresji może zająć dużo czasu. Aby sobie z tym poradzić, biblioteka kompresji C# ZIP udostępnia zdarzenie [CompressionProgressed] umożliwiające ciągłe publikowanie aktualizacji.
Aby uzyskać raport postępu kompresji w języku C#, wykonaj następujące kroki:
- Utwórz obiekt FileStream dla dużego pliku Excel.
- Zainicjuj klasę Archive i przekaż jej instancję klasy ArchiveEntrySettings.
- Uzyskaj obiekt ArchiveEntry z wywołania metody Archive.CreateEntry.
- Dołącz [CompressionProgressed] do obiektu ArchiveEntry.
- Wywołaj Archive.Save i użyj nazwy pliku wyjściowego jako parametru.
Poniższy przykładowy kod pokazuje, jak uzyskać raport o postępie kompresji w języku C#:
// Utwórz duży plik Excel
using (FileStream source = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings())))
{
// Dodaj i zapisz w archiwum
ArchiveEntry entry = archive.CreateEntry("huge.bin", source);
int percentReady = 0;
// Dołącz zdarzenie 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;
}
};
// Spakuj plik
archive.Save(zipFile);
}
}
Zdobądź bezpłatną licencję
Możesz uzyskać bezpłatną licencję tymczasową, aby przetestować interfejs API bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule nauczyłeś się, jak kompresować pliki Excel do archiwum ZIP w języku C# przy użyciu biblioteki kompresji C# ZIP. Poza tym masz wystarczającą wiedzę na temat uzyskiwania raportu postępu kompresji podczas kompresowania dużych plików Excela. Możesz odwiedzić dokumentację, aby poznać inne funkcje interfejsu API kompresji C# ZIP.
Zadać pytanie
Możesz przekazać nam swoje pytania lub wątpliwości na naszym forum.