Excel 파일은 오랫동안 업무 환경에서 널리 사용되어 왔으며, 버전에 따라 두 가지 주요 파일 형식이 존재합니다. XLS는 Excel 2003 및 그 이전 버전의 기본 형식이고, XLSX는 Excel 2007 이후 버전의 기본 형식입니다. 새로운 버전을 사용하는 환경이 늘어나면서 오래된 XLS 파일을 XLSX로 변환하거나, 반대로 특정 시스템과의 호환성을 위해 XLSX를 XLS로 변환해야 하는 상황이 발생합니다.
이 글에서는 C#에서 두 형식 간의 변환을 구현하는 방법을 살펴보겠습니다.
두 형식은 파일 구조와 지원하는 기능에서 차이가 있습니다.
XLS (Excel 97-2003)
XLSX (Excel 2007 이후)
XLS 형식은 열 수 제한이 있어 대규모 데이터를 처리할 때 제약이 될 수 있습니다. 반면, 구형 시스템이나 특정 레거시 애플리케이션은 XLS 형식만 지원하는 경우도 있습니다.
C#에서 Excel 파일 형식 변환을 구현하는 방법에는 여러 가지가 있습니다. Microsoft Office Interop을 사용하는 방식은 Excel이 설치되어 있어야 하고 서버 환경에서 불안정할 수 있습니다.
여기서는 Microsoft Office 설치 없이 작동하는 라이브러리를 사용하는 방법을 살펴보겠습니다.
NuGet 패키지 관리자를 통해 라이브러리를 설치합니다:
PM> Install-Package Spire.XLS
이 라이브러리는 .NET Framework, .NET Core, .NET 5/6 등 다양한 환경을 지원하며, XLS와 XLSX 형식을 모두 읽고 쓸 수 있습니다.
XLS 파일을 XLSX 형식으로 변환하는 과정은 다음과 같습니다:
using Spire.Xls;
namespace ConvertXlsToXlsx
{
class Program
{
static void Main(string[] args)
{
// Workbook 클래스의 인스턴스 생성
Workbook workbook = new Workbook();
// XLS 파일 로드
workbook.LoadFromFile("Input.xls");
// XLSX 형식으로 저장
workbook.SaveToFile("ToXlsx.xlsx", ExcelVersion.Version2016);
// 리소스 해제
workbook.Dispose();
}
}
}
SaveToFile 메서드의 두 번째 매개변수에는 변환할 Excel 버전을 지정합니다. ExcelVersion.Version2016은 최신 Excel 형식을 의미하며, 필요에 따라 Version2007, Version2010, Version2013 등을 선택할 수 있습니다.
반대 방향의 변환도 유사한 방식으로 수행됩니다.
using Spire.Xls;
namespace ConvertXlsxToXls
{
class Program
{
static void Main(string[] args)
{
// Workbook 클래스의 인스턴스 생성
Workbook workbook = new Workbook();
// XLSX 파일 로드
workbook.LoadFromFile("Input.xlsx");
// XLS 형식으로 저장 (Excel 97-2003)
workbook.SaveToFile("ToXls.xls", ExcelVersion.Version97to2003);
// 리소스 해제
workbook.Dispose();
}
}
}
XLS 형식으로 저장할 때는 ExcelVersion.Version97to2003을 지정합니다. 이는 Excel 97부터 2003까지의 형식을 의미합니다.
변환 시 사용할 수 있는 주요 ExcelVersion 값은 다음과 같습니다:
| 값 | 설명 |
|---|---|
Version97to2003 | Excel 97-2003 형식 (.xls) |
Version2007 | Excel 2007 형식 (.xlsx) |
Version2010 | Excel 2010 형식 (.xlsx) |
Version2013 | Excel 2013 형식 (.xlsx) |
Version2016 | Excel 2016 형식 (.xlsx) |
형식 변환 시 다음과 같은 사항을 고려해야 합니다.
XLSX에서 XLS로 변환할 때, XLS 형식의 제한으로 인해 일부 데이터가 손실되거나 잘릴 수 있습니다:
XLS 형식은 레거시 시스템과의 호환성을 위해 필요하지만, 보안 및 성능 측면에서는 XLSX가 더 우수합니다. 변환 목적이 특정 시스템과의 데이터 교환인지, 장기 보관인지에 따라 형식을 선택해야 합니다.
무료 버전의 경우 워크북당 시트 수, 시트당 행 수에 제한이 있을 수 있으며, 평가용 경고 시트가 추가될 수 있습니다. 상용 버전에서는 이러한 제한이 해제됩니다.
Excel 파일 처리를 위한 라이브러리를 선택할 때는 다음 사항을 고려해야 합니다:
Microsoft Office 의존성: Office 설치 없이 독립적으로 작동하는지 확인합니다. 서버 환경에서는 Office 설치가 어려울 수 있습니다.
지원하는 형식: XLS, XLSX 외에도 XLSM, XLSB, ODS 등 필요한 형식을 지원하는지 확인합니다.
라이선스: 무료 버전의 기능 제한을 확인하고, 상용 프로젝트에 사용할 경우 적절한 라이선스를 선택해야 합니다.
성능: 대용량 파일 변환 시의 성능과 메모리 사용량을 고려해야 합니다.
C#에서 XLS와 XLSX 형식 간의 변환은 적절한 라이브러리를 사용하면 몇 줄의 코드로 구현할 수 있습니다. LoadFromFile로 파일을 로드한 후 SaveToFile 메서드에 원하는 ExcelVersion을 지정하면 됩니다.
XLSX에서 XLS로 변환할 때는 XLS 형식의 행 및 열 제한으로 인한 데이터 손실 가능성을 인지해야 합니다. 변환 목적과 대상 시스템의 요구사항을 명확히 파악한 후 적절한 형식과 버전을 선택하시기 바랍니다.