ZIP arşivleri, genellikle dosyaların boyutunu küçültmek için kullanılan birden fazla dosya içerebilir. Aynı zamanda, her dosya ayrı ayrı sıkıştırılır, bu da tüm Zip arşivini sıkıştırmadan veya açmadan dosyaların çıkarılmasına ve yenilerinin eklenmesine yardımcı olur. Günümüzde günlük iş faaliyetlerinde Excel (XLSX veya XLS) elektronik tablolarının kullanımı artmıştır. Bazen Excel dosyaları oldukça büyüyebilir ancak bunları bir ZIP arşivine sıkıştırarak boyutlarını küçültebiliriz. Bu makalede, karmaşık kod yazmadan Excel dosyalarını C# dilinde ZIP arşivine nasıl sıkıştıracağınızı öğreneceksiniz. Bunun dışında, büyük excel dosyalarını sıkıştırırken sıkıştırma ilerleme raporunu nasıl alacağınızı göreceksiniz.
Bu makalede aşağıdaki noktalar ele alınacaktır:
- Excel dosyalarını ZIP arşivine sıkıştırmak için C# .NET API
- C#’ta XLS veya XLSX dosyalarını ZIP’e ekleme
- C#’ta sıkıştırma ilerleme raporunu alın
Excel dosyalarını ZIP arşivine sıkıştırmak için C# .NET API’si
Excel dosyalarını bir ZIP arşivine sıkıştırmak için Aspose.ZIP for .NET kullanacağız. API çok sayıda arşivleme özelliğinden oluşur. Bu nedenle, DLL’yi indirebilir veya NuGet kullanarak yükleyebilirsiniz.
Install-Package Aspose.ZIP
C#’ta XLS veya XLSX dosyalarını ZIP’e ekleme
ZIP arşivine sıkıştırmak için birden fazla Excel (XLSX veya XLS) dosyanız olduğunu varsayalım. İşi yapmak için aşağıdaki yollardan birini seçebilirsiniz.
C#, FileStream kullanarak Excel dosyalarını ZIP’e sıkıştırır
Bu şekilde, Archive.CreateEntry(String, FileStream) fonksiyonunu çağırarak ZIP arşivine dosya eklemek için FileStream sınıfını kullanacağız.
FileStream kullanarak Excel elektronik tablolarını ZIP’e sıkıştırmak için gereken adımlar aşağıda verilmiştir:
- İlk olarak, çıktı ZIP arşivi için FileStream sınıfının bir nesnesini oluşturun.
- İkinci olarak, sıkıştırılacak Excel dosyaları için FileStream nesneleri oluşturun.
- Ardından, Archive sınıfını başlatın ve ona ArchiveEntrySettings sınıfının bir örneğini iletin.
- Bundan sonra, Archive.CreateEntry yöntemini kullanarak 2. adımda oluşturulan FileStream nesnelerini ekleyin.
- Son olarak, Archive.Save yöntemini çağırın ve FileStream nesnelerini (1. adımda oluşturuldu) ve ArchiveSaveOptions örneğini parametre olarak kullanın.
Aşağıdaki kod, FileStream kullanılarak Excel dosyalarının ZIP’e nasıl sıkıştırılacağını gösterir.
// Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// Sıkıştırılacak dosya1
using (FileStream excel_file1 = File.Open("data1.xlsx", FileMode.Open, FileAccess.Read))
{
// Sıkıştırılacak dosya2
using (FileStream excel_file2 = File.Open("data2.xlsx" , FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
//Dosyaları arşive ekle.
archive.CreateEntry("data1.xlsx", excel_file2);
archive.CreateEntry("data2.xlsx", excel_file2);
// Dosyaları ZIP arşivine sıkıştırın
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "Two files are compressed in this archive." });
}
}
}
}
C#, FileInfo’yu kullanarak XLSX veya XLS dosyalarını ZIP’e sıkıştırır
Alternatif olarak, ZIP arşivine dosya eklemek için FileInfo sınıfını kullanabiliriz. Bu durumda dosyalar FileInfo sınıfı kullanılarak yüklenecek ve Archive.CreateEntry(String, FileInfo) yöntemi çağrılarak ZIP arşivine eklenecektir.
Lütfen aşağıda belirtilen adımları izleyin:
- Çıktı ZIP arşivi için FileStream sınıfının bir nesnesini oluşturun.
- Sıkıştırılacak Excel dosyaları için FileInfo nesneleri oluşturun.
- Archive sınıfını başlatın ve ona ArchiveEntrySettings sınıfının bir örneğini iletin.
- Archive.CreateEntry yöntemini kullanarak 2. adımda oluşturulan FileStream nesnelerini ekleyin.
- Dosyaları sıkıştırmak için, Archive.Save yöntemini çağırın ve FileStream nesnelerini (1. adımda oluşturuldu) ve ArchiveSaveOptions örneğini parametre olarak kullanın.
Aşağıdaki kod, XLSX veya XLS dosyalarının FileInfo kullanılarak ZIP’e nasıl sıkıştırılacağını gösterir.
//Çıktı ZIP arşivi için FileStream oluşturun
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// Sıkıştırılacak dosyalar
FileInfo fi1 = new FileInfo("data1.xlsx");
FileInfo fi2 = new FileInfo("data2.xlsx");
using (var archive = new Archive())
{
//Dosyaları arşive ekle
archive.CreateEntry("data1.xlsx", fi1);
archive.CreateEntry("data2.xlsx", fi2);
// Dosyaları ZIP arşivine sıkıştırın
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Dosya yolunu kullanarak Excel elektronik tablolarını ZIP’e sıkıştırın
En basit yol, doğrudan Archive.CreateEntry yöntemine bir Excel dosya yolu eklemektir:
Bir dosya yolu kullanarak Excel elektronik tablolarını ZIP’e sıkıştırmak için gereken adımlar aşağıda verilmiştir:
- Arşiv sınıfını başlatın.
- Archive.CreateEntry yöntemini kullanarak excel dosyalarını ekleyin.
- Verileri sıkıştırmak için Archive.Save yöntemini çağırın ve çıktı dosyasının adını parametre olarak kullanın.
Aşağıdaki kod, bir dosya yolu kullanarak Excel elektronik tablo dosyalarının ZIP’e nasıl sıkıştırılacağını gösterir.
//Arşiv sınıfının bir örneğini oluşturun
using (var archive = new Archive())
{
//Archive.CreateEntry yöntemini kullanarak dosya ekleme
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
//Dosyaları sıkıştırın.
archive.Save("result_archive.zip");
}
C#’ta sıkıştırma ilerleme raporunu alın
Büyük Excel dosyaları söz konusu olduğunda sıkıştırma işleminin tamamlanması uzun zaman alabilir. Bununla başa çıkmak için, C# ZIP sıkıştırma kitaplığı, güncellemeleri sürekli olarak göndermek için [CompressionProgressed] olayını sağlar.
C#’ta sıkıştırma ilerleme raporunu alma adımları şunlardır:
- Büyük Excel dosyası için bir FileStream nesnesi oluşturun.
- Archive sınıfını başlatın ve ona ArchiveEntrySettings sınıfının bir örneğini iletin.
- Archive.CreateEntry yöntem çağrısından ArchiveEntry nesnesini edinin.
- [CompressionProgressed] öğesini ArchiveEntry nesnesine ekleyin.
- Archive.Save‘ü çağırın ve çıktı dosyasının adını parametre olarak kullanın.
Aşağıdaki kod örneği, C#’ta sıkıştırma ilerleme raporunun nasıl alınacağını gösterir:
// Büyük Excel dosyası oluşturun
using (FileStream source = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings())))
{
// Arşive ekle ve dosyala
ArchiveEntry entry = archive.CreateEntry("huge.bin", source);
int percentReady = 0;
// CompressionProgress olayını ekle
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;
}
};
// Dosyayı sıkıştırın
archive.Save(zipFile);
}
}
Ücretsiz Lisans Alın
API’yi değerlendirme sınırlamaları olmadan test etmek için ücretsiz geçici lisans alabilirsiniz.
Çözüm
Bu makalede, C# ZIP sıkıştırma kitaplığı kullanarak Excel dosyalarını C# dilinde bir ZIP arşivine nasıl sıkıştıracağınızı öğrendiniz. Bunun yanı sıra, büyük excel dosyalarını sıkıştırırken sıkıştırma ilerleme raporu alma konusunda yeterli bilgiye sahip oldunuz. C# ZIP sıkıştırma API’sinin diğer özelliklerini keşfetmek için belgeleri ziyaret edebilirsiniz.
Bir soru sor
Sorularınızı veya sorularınızı forumumuzda bize bildirebilirsiniz.