
C#에서 Excel 파일을 ZIP으로 압축하는 방법
ZIP 아카이브에는 일반적으로 파일 크기를 줄이는 데 사용되는 여러 파일이 포함될 수 있습니다. 동시에 각 파일은 개별적으로 압축되므로 전체 Zip 아카이브를 압축하거나 압축 해제하지 않고도 파일을 추출하고 새 파일을 추가할 수 있습니다. 최근 일상적인 비즈니스 활동에서 Excel(XLSX 또는 XLS) 스프레드시트의 사용이 증가했습니다. 경우에 따라 Excel 파일이 상당히 커질 수 있지만 ZIP 아카이브로 압축하여 크기를 줄일 수 있습니다. 이 기사에서는 **복잡한 코드를 작성하지 않고 Excel 파일을 C#**의 ZIP 아카이브로 압축하는 방법을 배웁니다. 그 외에도 대용량 엑셀 파일을 압축하는 동안 압축 진행률 보고서를 얻는 방법을 볼 수 있습니다.
이 기사에서 다룰 내용은 다음과 같습니다.
Excel 파일을 ZIP 아카이브로 압축하는 C# .NET API
Excel 파일을 ZIP 아카이브로 압축하기 위해 Aspose.ZIP for .NET을 사용합니다. API는 수많은 보관 기능으로 구성됩니다. 따라서 DLL을 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.
Install-Package Aspose.ZIP
C#에서 ZIP에 XLS 또는 XLSX 파일 추가
ZIP 아카이브로 압축하기 위한 여러 Excel(XLSX 또는 XLS) 파일이 있다고 가정합니다. 작업을 수행하기 위해 다음 방법 중 하나를 선택할 수 있습니다.
C#은 FileStream을 사용하여 Excel 파일을 ZIP으로 압축합니다.
이런 식으로 FileStream 클래스를 사용하여 Archive.CreateEntry(String, FileStream) 함수를 호출하여 ZIP 아카이브에 파일을 추가합니다.
다음은 FileStream을 사용하여 Excel 스프레드시트를 ZIP으로 압축하는 단계입니다.
- 출력 ZIP 아카이브에 대한 FileStream 클래스의 개체를 만듭니다.
- 압축할 Excel 파일에 대한 FileStream 개체를 만듭니다.
- Archive 클래스를 초기화하고 ArchiveEntrySettings 클래스의 인스턴스를 전달합니다.
- Archive.CreateEntry 메서드를 사용하여 2단계에서 생성한 FileStream 개체를 추가합니다.
- 파일을 압축하려면 Archive.Save 메서드를 호출하고 FileStream(1단계에서 생성)의 객체와 ArchiveSaveOptions의 인스턴스를 파라미터로 사용합니다.
다음 코드는 FileStream을 사용하여 Excel 파일을 ZIP으로 압축하는 방법을 보여줍니다.
// 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#은 FileInfo를 사용하여 XLSX 또는 XLS 파일을 ZIP으로 압축합니다.
또는 FileInfo 클래스를 사용하여 ZIP 아카이브에 파일을 추가할 수 있습니다. 이 경우 파일은 FileInfo 클래스를 사용하여 로드되고 Archive.CreateEntry(String, FileInfo) 메서드를 호출하여 ZIP 아카이브에 추가됩니다.
아래 언급된 단계를 따르십시오.
- 출력 ZIP 아카이브에 대한 FileStream 클래스의 개체를 만듭니다.
- 압축할 Excel 파일에 대한 FileInfo 개체를 생성합니다.
- Archive 클래스를 초기화하고 ArchiveEntrySettings 클래스의 인스턴스를 전달합니다.
- Archive.CreateEntry 메서드를 사용하여 2단계에서 생성한 FileStream 개체를 추가합니다.
- 파일을 압축하려면 Archive.Save 메서드를 호출하고 FileStream(1단계에서 생성)의 객체와 ArchiveSaveOptions의 인스턴스를 파라미터로 사용합니다.
다음 코드는 FileInfo를 사용하여 XLSX 또는 XLS 파일을 ZIP으로 압축하는 방법을 보여줍니다.
//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 압축 라이브러리는 [CompressionProgressed] 이벤트를 제공하여 지속적으로 업데이트를 게시합니다.
다음은 C#에서 압축 진행률 보고서를 가져오는 단계입니다.
- 큰 Excel 파일에 대해 FileStream 개체를 만듭니다.
- Archive 클래스를 초기화하고 ArchiveEntrySettings 클래스의 인스턴스를 전달합니다.
- Archive.CreateEntry 메서드 호출에서 ArchiveEntry 객체를 획득합니다.
- [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를 테스트할 수 있습니다.
결론
이 기사에서는 **C# ZIP 압축 라이브러리**를 사용하여 **C#**에서 Excel 파일을 ZIP 아카이브로 압축하는 방법을 배웠습니다. 그 외에도 대용량 Excel 파일을 압축하는 동안 압축 진행률 보고서를 받는 방법에 대한 충분한 지식을 얻었습니다. C# ZIP 압축 API의 다른 기능을 살펴보려면 문서를 방문하십시오.
질문하기
포럼에서 질문이나 쿼리를 알려주세요.