
Как сжать файлы Excel в ZIP на C#
Архивы ZIP могут содержать несколько файлов, что обычно используется для уменьшения размера файлов. При этом каждый файл сжимается индивидуально, что помогает извлекать их и добавлять новые без сжатия или распаковки всего Zip-архива. В настоящее время использование электронных таблиц Excel (XLSX или XLS) увеличилось в повседневной деловой деятельности. Иногда файлы Excel могут быть довольно большими, но мы можем уменьшить их размер, сжав их в ZIP-архив. В этой статье вы узнаете, как сжимать файлы Excel в ZIP-архив на C# без написания сложного кода. Кроме того, вы увидите, как получить отчет о ходе сжатия при сжатии больших файлов Excel.
В этой статье будут рассмотрены следующие моменты:
- C# .NET API для сжатия файлов Excel в ZIP-архив
- Добавить файлы XLS или XLSX в ZIP на C#
- Получить отчет о ходе сжатия в C#
C# .NET API для сжатия файлов Excel в ZIP-архив
Чтобы сжать файлы Excel в ZIP-архив, мы будем использовать Aspose.ZIP для .NET. API состоит из многочисленных функций архивирования. Поэтому вы можете скачать 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:
- Создать объект класса FileStream для выходного ZIP-архива.
- Создайте объекты FileStream для сжимаемых файлов Excel.
- Инициализируйте класс Archive и передайте ему экземпляр класса ArchiveEntrySettings.
- Добавьте объекты FileStream, созданные на шаге 2, с помощью метода Archive.CreateEntry.
- Чтобы сжать файлы, вызовите метод Archive.Save и используйте объекты FileStream (созданные на шаге 1) и экземпляр ArchiveSaveOptions в качестве параметров.
В следующем коде показано, как сжать файлы 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).
Пожалуйста, следуйте инструкциям ниже:
- Создать объект класса FileStream для выходного ZIP-архива.
- Создайте объекты FileInfo для сжимаемых файлов Excel.
- Инициализируйте класс Archive и передайте ему экземпляр класса ArchiveEntrySettings.
- Добавьте объекты FileStream, созданные на шаге 2, с помощью метода Archive.CreateEntry.
- Чтобы сжать файлы, вызовите метод Archive.Save и используйте объекты FileStream (созданные на шаге 1) и экземпляр ArchiveSaveOptions в качестве параметров.
В следующем коде показано, как сжать файлы 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 с использованием пути к файлу:
- Инициализировать класс Архив.
- Добавьте файлы Excel, используя метод 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 процесс сжатия может занять много времени. Чтобы справиться с этим, библиотека сжатия ZIP C# предоставляет событие [CompressionProgressed] для непрерывной публикации обновлений.
Ниже приведены шаги для получения отчета о ходе сжатия в C#:
- Создайте объект FileStream для большого файла Excel.
- Инициализируйте класс Archive и передайте ему экземпляр класса ArchiveEntrySettings.
- Получить объект ArchiveEntry из вызова метода Archive.CreateEntry.
- Прикрепите [CompressionProgressed] к объекту ArchiveEntry.
- Вызовите Archive.Save и используйте имя выходного файла в качестве параметра.
В следующем примере кода показано, как получить отчет о ходе сжатия в 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); | |
} | |
} |
Получить бесплатную лицензию
Вы можете получить бесплатную временную лицензию для тестирования API без ограничений пробной версии.
Заключение
В этой статье вы узнали, как сжимать файлы Excel в ZIP-архив на C#, используя библиотеку сжатия ZIP C#. Кроме того, вы получили достаточно знаний о том, как получить отчет о ходе сжатия при сжатии больших файлов Excel. Вы можете посетить документацию, чтобы изучить другие функции C# API сжатия ZIP.
Задайте вопрос
Вы можете сообщить нам о своих вопросах или запросах на нашем форуме.