چگونه فایل های اکسل را به ZIP در C# فشرده کنیم

چگونه فایل‌های اکسل را در C# به ZIP فشرده کنیم

فایل‌های ZIP می‌توانند شامل چندین فایل باشند و معمولاً برای کاهش حجم فایل‌ها استفاده می‌شوند. در عین حال، هر فایل به صورت جداگانه فشرده می‌شود، که به استخراج آن‌ها و اضافه کردن فایل‌های جدید بدون نیاز به فشرده‌سازی یا از فشرده‌سازی خارج کردن کل آرشیو ZIP کمک می‌کند. امروزه، استفاده از صفحات گسترده اکسل (XLSX یا XLS) در فعالیت‌های روزمره کسب‌وکار افزایش یافته است. گاهی اوقات، فایل‌های اکسل می‌توانند بسیار بزرگ شوند، اما می‌توانیم حجم آن‌ها را با فشرده‌سازی در یک آرشیو ZIP کاهش دهیم. در این مقاله، شما یاد خواهید گرفت که چگونه فایل‌های اکسل را در #C به یک آرشیو ZIP فشرده کنید بدون اینکه نیاز به نوشتن کد پیچیده داشته باشید. علاوه بر این، شما خواهید دید که چگونه می‌توانید گزارش پیشرفت فشرده‌سازی را هنگام فشرده‌سازی فایل‌های اکسل بزرگ دریافت کنید.

نقاط زیر در این مقاله بررسی خواهد شد:

C# .NET API برای فشرده‌سازی فایل‌های Excel به یک آرشیو ZIP

برای فشرده‌سازی فایل‌های Excel به یک آرشیو ZIP، ما از Aspose.ZIP for .NET استفاده خواهیم کرد. این API شامل ویژگی‌های فراوانی برای آرشیو کردن است. بنابراین، شما می‌توانید download DLL را دانلود کنید یا آن را با استفاده از NuGet نصب کنید.

Install-Package Aspose.ZIP

XLS یا XLSX فایل‌ها را به ZIP در C# اضافه کنید

فرض کنید چندین فایل Excel (XLSX یا XLS) برای فشرده‌سازی به یک آرشیو ZIP دارید. می‌توانید یکی از روش‌های زیر را برای انجام کار انتخاب کنید.

C# فشرده‌سازی فایل‌های Excel به ZIP با استفاده از FileStream

به این ترتیب، ما از کلاس FileStream برای افزودن فایل‌ها به آرشیو ZIP با فراخوانی تابع Archive.CreateEntry(String, FileStream) استفاده خواهیم کرد.

مراحل زیر برای فشرده‌سازی صفحات گسترده Excel به ZIP با استفاده از FileStream ارائه شده است:

  1. اولین کار، ایجاد یک شی از FileStream کلاس برای آرشیو ZIP خروجی است.
  2. به طور دوم، اشیایی از FileStream برای فایل‌های اکسل که باید فشرده شوند، ایجاد کنید.
  3. سپس، کلاس Archive را اولیه‌سازی کنید و یک نمونه از کلاس ArchiveEntrySettings را به آن پاس دهید.
  4. بعد از آن، FileStream اشیائی که در مرحله ۲ ایجاد شده‌اند را با استفاده از Archive.CreateEntry روش اضافه کنید.
  5. در نهایت، متد Archive.Save را فراخوانی کنید و از اشیاء FileStream(ایجاد شده در مرحله 1) و نمونه‌ای از ArchiveSaveOptions به عنوان پارامترها استفاده کنید.

کد زیر نشان می‌دهد که چگونه می‌توان فایل‌های اکسل را به فرمت ZIP فشرده کرد با استفاده از FileStream.

// FileStream را برای آرشیو ZIP خروجی ایجاد کنید.
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
            {
                // File1 to be compressed
                using (FileStream excel_file1 = File.Open("data1.xlsx", FileMode.Open, FileAccess.Read))
                {
                   // File2 to be compressed
                   using (FileStream excel_file2 = File.Open("data2.xlsx" , FileMode.Open, FileAccess.Read))
                    {
                        using (var archive = new Archive())
                        {
                            //Add files to archive.
                            archive.CreateEntry("data1.xlsx", excel_file2);
                            archive.CreateEntry("data2.xlsx", excel_file2);
                            // فایل‌ها را به آرشیو ZIP فشرده کنید
                            archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "Two files are compressed in this archive." });
                        }
                    }
                }
            }

فشرده‌سازی فایل‌های XLSX یا XLS به ZIP با استفاده از FileInfo در C#

به طور جایگزین، می‌توانیم از کلاس FileInfo برای افزودن فایل‌ها به آرشیو ZIP استفاده کنیم. در این مورد، فایل‌ها با استفاده از کلاس FileInfo بارگذاری شده و با فراخوانی متد Archive.CreateEntry(String, FileInfo) به آرشیو ZIP افزوده می‌شوند.

لطفا مراحل ذکر شده در زیر را دنبال کنید:

  1. یک شی از کلاس FileStream برای آرشیو ZIP خروجی ایجاد کنید.
  2. شیء هایی از FileInfo برای فایل های اکسل که باید فشرده شوند، ایجاد کنید.
  3. Initialize Archive class and pass it an instance of ArchiveEntrySettings class.
  4. Add FileStream objects created in step 2 using Archive.CreateEntry method.
  5. برای فشرده‌سازی فایل‌ها، از متد Archive.Save استفاده کنید و اشیاء FileStream(ایجاد شده در مرحله 1) و نمونه‌ای از ArchiveSaveOptions را به عنوان پارامترها بکار ببرید.

کد زیر نشان می‌دهد که چگونه فایل‌های XLSX یا XLS را با استفاده از FileInfo فشرده کنیم.

//FileStream را برای آرشیو ZIP خروجی ایجاد کنید
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
      {
               // فایل‌هایی که باید فشرده شوند
               FileInfo fi1 = new FileInfo("data1.xlsx");
                FileInfo fi2 = new FileInfo("data2.xlsx");

                using (var archive = new Archive())
                {
                    //فایل ها را به بایگانی اضافه کنید
                    archive.CreateEntry("data1.xlsx", fi1);
                    archive.CreateEntry("data2.xlsx", fi2);
                    // فایل‌ها را به آرشیو ZIP فشرده کنید
                    archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
                }
       }

فشرده‌سازی صفحات گسترده اکسل به فرمت ZIP با استفاده از مسیر فایل

ساده‌ترین راه این است که یک مسیر فایل اکسل را مستقیماً به Archive.CreateEntry متد اضافه کنید:

مراحل فشرده‌سازی صفحات گسترده Excel به ZIP با استفاده از مسیر فایل به شرح زیر است:

  • Initialize Archive class.
  • Add excel files using Archive.CreateEntry method.
  • برای فشرده سازی داده‌ها، متد Archive.Save را فراخوانی کنید و نام فایل خروجی را به عنوان پارامتر استفاده کنید.

کد زیر نشان می‌دهد که چگونه فایل‌های صفحه‌گسترده Excel را با استفاده از یک مسیر فایل فشرده کنیم.

//یک نمونه از کلاس Archive ایجاد کنید
using (var archive = new Archive())
{
  //فایل‌ها را با استفاده از روش Archive.CreateEntry اضافه کنید
   archive.CreateEntry("entry_name1.dat", "input_file1.dat");
   archive.CreateEntry("entry_name2.dat", "input_file2.dat");
   //فایل ها را فشرده کنید.
   archive.Save("result_archive.zip");
}

گزارش پیشرفت فشرده‌سازی را در C# بگیرید.

در مورد فایل‌های بزرگ Excel، فرآیند فشرده‌سازی ممکن است زمان زیادی طول بکشد تا کامل شود. برای مقابله با این موضوع، C# ZIP compression library رویداد [CompressionProgressed] را برای ارسال به‌روزرسانی‌ها به‌طور مداوم فراهم می‌آورد.

مراحل زیر برای دریافت گزارش پیشرفت فشرده‌سازی در C# هستند:

نمونه کد زیر نشان می‌دهد که چگونه گزارش پیشرفت فشرده‌سازی را در 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())))
    {
        // Add and file to archive
        ArchiveEntry entry = archive.CreateEntry("huge.bin", source);
        int percentReady = 0;
        // Attach CompressionProgress event
        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;
                 }       
             };
        // فایل را فشرده کن
        archive.Save(zipFile);
    }
}

گرفتن یک مجوز رایگان

شما می‌توانید یک مجوز موقت رایگان برای آزمایش API بدون محدودیت‌های ارزیابی دریافت کنید.

نتیجه گیری

در این مقاله، شما یاد گرفته‌اید که چگونه فایل‌های اکسل را به یک آرشیو ZIP در C# فشرده کنید با استفاده از یک C# ZIP compression library. علاوه بر این، شما دانش کافی در مورد دریافت گزارش پیشرفت فشرده‌سازی در حین فشرده‌سازی فایل‌های اکسل بزرگ به‌دست آورده‌اید. شما می‌توانید به documentation مراجعه کنید تا ویژگی‌های دیگر API فشرده‌سازی C# ZIP را بررسی کنید.

Ask a question

شما می‌توانید سوالات یا پرسش‌های خود را در forum به ما اطلاع دهید.

همچنین ببینید