كيفية ضغط ملفات Excel إلى ZIP في C #

كيفية ضغط ملفات Excel إلى ZIP في C #

يمكن أن تحتوي أرشيفات ZIP على ملفات متعددة ، تُستخدم بشكل شائع لتقليل حجم الملفات. في الوقت نفسه ، يتم ضغط كل ملف على حدة ، مما يساعد على استخراجها وإضافة ملفات جديدة دون ضغط أو فك ضغط أرشيف Zip بأكمله. في الوقت الحاضر ، زاد استخدام جداول بيانات Excel (XLSX أو XLS) في أنشطة الأعمال اليومية. في بعض الأحيان ، يمكن أن تصبح ملفات Excel كبيرة جدًا ، ولكن يمكننا تقليل حجمها عن طريق ضغطها في أرشيف ZIP. في هذه المقالة ، ستتعلم ** كيفية ضغط ملفات Excel إلى أرشيف ZIP في C # ** دون كتابة تعليمات برمجية معقدة. بصرف النظر عن ذلك ، سترى كيفية الحصول على ** تقرير تقدم الضغط ** أثناء ضغط ملفات Excel الكبيرة.

سيتم تناول النقاط التالية في هذه المقالة:

C # .NET API لضغط ملفات Excel إلى أرشيف ZIP

لضغط ملفات Excel في أرشيف ZIP ، سنستخدم Aspose.ZIP for .NET. تتكون واجهة برمجة التطبيقات من العديد من ميزات الأرشفة. لذلك ، يمكنك تنزيل 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:

يوضح الكود التالي كيفية ضغط ملفات Excel إلى ZIP باستخدام FileStream.

// Create FileStream for output ZIP archive
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);
// Compress the files into ZIP archive
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "Two files are compressed in this archive." });
}
}
}
}

C # ضغط ملفات XLSX أو XLS في ZIP باستخدام FileInfo

بدلاً من ذلك ، يمكننا استخدام فئة FileInfo لإضافة ملفات إلى أرشيف ZIP. في هذه الحالة ، سيتم تحميل الملفات باستخدام فئة FileInfo وإضافتها إلى أرشيف ZIP باستدعاء طريقة Archive.CreateEntry (String، FileInfo).

يرجى اتباع الخطوات المذكورة أدناه:

توضح التعليمات البرمجية التالية كيفية ضغط ملفات XLSX أو XLS في ZIP باستخدام FileInfo.

//Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("CompressFiles_out.zip", FileMode.Create))
{
// Files to be compressed
FileInfo fi1 = new FileInfo("data1.xlsx");
FileInfo fi2 = new FileInfo("data2.xlsx");
using (var archive = new Archive())
{
//Add files to archive
archive.CreateEntry("data1.xlsx", fi1);
archive.CreateEntry("data2.xlsx", fi2);
// Compress the files into ZIP archive
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}

ضغط جداول بيانات Excel إلى ZIP باستخدام مسار الملف

أسهل طريقة هي إضافة مسار ملف Excel مباشرة إلى طريقة Archive.CreateEntry:

فيما يلي خطوات ضغط جداول بيانات Excel إلى ZIP باستخدام مسار ملف:

  • تهيئة أرشيف فئة.
  • اضافة ملفات اكسل باستخدام طريقة Archive.CreateEntry.
  • لضغط البيانات ، استدع طريقة Archive.Save واستخدم اسم ملف الإخراج كمعامل.

توضح التعليمة البرمجية التالية كيفية ضغط ملفات جداول بيانات Excel إلى ZIP باستخدام مسار ملف.

//Create an instance of Archive class
using (var archive = new Archive())
{
//Add files using Archive.CreateEntry method
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
//Zip the files.
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;
}
};
// Zip the file
archive.Save(zipFile);
}
}

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لاختبار واجهة برمجة التطبيقات بدون قيود التقييم.

خاتمة

في هذه المقالة ، تعلمت ** كيفية ضغط ملفات Excel إلى أرشيف ZIP في C # ** باستخدام ** مكتبة ضغط C # ZIP **. بصرف النظر عن ذلك ، لديك معرفة كافية حول الحصول على ** تقرير تقدم الضغط ** أثناء ضغط ملفات Excel الكبيرة. يمكنك زيارة الوثائق لاستكشاف الميزات الأخرى ** C # ZIP compression API **.

طرح سؤال

يمكنك إخبارنا بأسئلتك أو استفساراتك على المنتدى.

أنظر أيضا