C#'ta Excel Dosyalarını ZIP'e Sıkıştırma

C#’ta Excel Dosyalarını ZIP’e Sıkıştırma

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’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:

  1. İlk olarak, çıktı ZIP arşivi için FileStream sınıfının bir nesnesini oluşturun.
  2. İkinci olarak, sıkıştırılacak Excel dosyaları için FileStream nesneleri oluşturun.
  3. Ardından, Archive sınıfını başlatın ve ona ArchiveEntrySettings sınıfının bir örneğini iletin.
  4. Bundan sonra, Archive.CreateEntry yöntemini kullanarak 2. adımda oluşturulan FileStream nesnelerini ekleyin.
  5. 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:

  1. Çıktı ZIP arşivi için FileStream sınıfının bir nesnesini oluşturun.
  2. Sıkıştırılacak Excel dosyaları için FileInfo nesneleri oluşturun.
  3. Archive sınıfını başlatın ve ona ArchiveEntrySettings sınıfının bir örneğini iletin.
  4. Archive.CreateEntry yöntemini kullanarak 2. adımda oluşturulan FileStream nesnelerini ekleyin.
  5. 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:

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.

Ayrıca bakınız