C#에서 Excel을 TXT로 변환하는 방법

Pilalo Jovanitho·2026년 9월 18일

Excel 파일은 데이터를 표 형식으로 정리하고 서식을 적용하는 데 유용하지만, 때로는 순수 텍스트 형식으로 데이터를 추출해야 할 필요가 있습니다. TXT 파일은 서식이 없는 순수 텍스트만 포함하므로 파일 크기가 작고, 레거시 시스템이나 텍스트 기반 데이터 파이프라인과의 호환성이 뛰어납니다.

이 글에서는 C#에서 Excel 워크시트를 TXT 파일로 변환하는 방법을 살펴보겠습니다.

Excel을 TXT로 변환하는 이유

Excel 데이터를 TXT로 변환하는 것은 다음과 같은 상황에서 유용합니다:

  • 레거시 시스템 연동: 구분된 텍스트 형식만 지원하는 오래된 애플리케이션이나 스크립트와의 데이터 교환에 필요합니다.
  • 데이터 분석 준비: Python의 pandas나 R과 같은 분석 도구에 포맷 의존성 없이 데이터를 전달할 수 있습니다.
  • 배치 자동화: ERP 마이그레이션 프로젝트에서 대량의 TXT 파일 내보내기가 필요한 경우가 있습니다.
  • 파일 크기 및 단순성: TXT 파일은 Excel 파일보다 크기가 작고, 텍스트 편집기로 내용을 확인할 수 있습니다.

사용할 라이브러리

C#에서 Excel 파일을 처리하고 TXT로 변환하는 방법에는 여러 가지가 있습니다. Microsoft Office Interop을 사용하는 방법도 있지만, 이 방식은 Microsoft Excel이 설치되어 있어야 하고 서버 환경에서 불안정할 수 있다는 제약이 있습니다.

여기서는 Microsoft Office 설치 없이 작동하는 라이브러리를 사용하는 방법을 살펴보겠습니다.

라이브러리 설치

NuGet 패키지 관리자를 통해 라이브러리를 설치합니다:

PM> Install-Package Spire.XLS

Excel을 TXT로 변환하기

Excel 파일의 특정 워크시트를 TXT 파일로 변환하는 과정은 다음과 같습니다:

  1. Workbook 클래스의 인스턴스를 초기화합니다.
  2. LoadFromFile 메서드를 사용하여 Excel 파일을 로드합니다.
  3. Worksheet 객체를 가져옵니다.
  4. SaveToFile 메서드를 호출하여 TXT 형식으로 저장합니다.

기본 변환 코드 예제

using Spire.Xls;
using System.Text;

namespace ExcelToTXT
{
    class Program
    {
        static void Main(string[] args)
        {
            // Workbook 클래스의 인스턴스 생성
            Workbook workbook = new Workbook();

            // Excel 파일 로드
            workbook.LoadFromFile("sample.xlsx");

            // 첫 번째 워크시트 가져오기
            Worksheet sheet = workbook.Worksheets[0];

            // TXT 파일로 저장 (공백을 구분자로, UTF-8 인코딩)
            sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.UTF8);

            // 리소스 해제
            workbook.Dispose();
        }
    }
}

SaveToFile 메서드는 파일 이름, 구분자, 인코딩을 매개변수로 받습니다. 위 예제에서는 공백을 구분자로, UTF-8을 인코딩으로 지정했습니다.

SaveToFile 메서드 오버로드

SaveToFile 메서드는 다음과 같은 오버로드를 제공합니다:

오버로드설명
SaveToFile(string fileName, string separator)파일 이름과 구분자만 지정
SaveToFile(string fileName, string separator, Encoding encoding)파일 이름, 구분자, 인코딩 지정

구분자 및 인코딩 사용자 정의

Excel 데이터를 TXT로 내보낼 때 구분자와 인코딩을 조정하여 다양한 요구사항에 대응할 수 있습니다.

구분자 변경

TXT 파일의 구분자는 대상 시스템에 따라 선택할 수 있습니다:

// 탭을 구분자로 사용 (TSV 형식)
sheet.SaveToFile("ExceltoTxt.txt", "\t", Encoding.UTF8);

// 쉼표를 구분자로 사용 (CSV와 유사)
sheet.SaveToFile("ExceltoTxt.txt", ",", Encoding.UTF8);

// 공백을 구분자로 사용
sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.UTF8);

인코딩 지정

한글이나 기타 비ASCII 문자가 포함된 데이터의 경우 UTF-8 인코딩을 사용하는 것이 일반적입니다. 레거시 시스템에서는 다른 인코딩이 필요할 수 있습니다:

// EUC-KR 인코딩 사용 (한국 레거시 환경)
sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.GetEncoding("EUC-KR"));

// ASCII 인코딩 사용 (영문만 포함된 경우)
sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.ASCII);

여러 워크시트를 개별 TXT 파일로 변환하기

워크북에 여러 워크시트가 있는 경우, 각 워크시트를 개별 TXT 파일로 변환할 수 있습니다.

C# 코드 예제

using Spire.Xls;
using System.Text;

namespace ConvertAllSheets
{
    class Program
    {
        static void Main(string[] args)
        {
            // Workbook 클래스의 인스턴스 생성
            Workbook workbook = new Workbook();

            // Excel 파일 로드
            workbook.LoadFromFile("multi.xlsx");

            // 모든 워크시트를 반복
            for (int i = 0; i < workbook.Worksheets.Count; i++)
            {
                Worksheet sheet = workbook.Worksheets[i];

                // 각 워크시트를 TXT로 저장
                string fileName = $"Sheet{i + 1}.txt";
                sheet.SaveToFile(fileName, "\t", Encoding.UTF8);

                System.Console.WriteLine($"{fileName} 저장 완료");
            }

            // 리소스 해제
            workbook.Dispose();
        }
    }
}

대용량 파일 처리 시 고려사항

대용량 Excel 파일을 TXT로 변환할 때는 다음과 같은 사항을 고려해야 합니다:

  1. 메모리 사용량: 전체 워크시트를 메모리에 로드하므로, 매우 큰 파일의 경우 메모리 부족이 발생할 수 있습니다. 이 경우 스트리밍 방식이나 청크 단위 처리를 고려해야 합니다.

  2. 처리 시간: 셀 수가 많을수록 변환 시간이 증가합니다. 후속 작업까지 고려한 시간 계획이 필요합니다.

  3. 인코딩: TXT 파일은 텍스트 기반이므로 올바른 인코딩을 지정하지 않으면 한글이나 특수 문자가 깨질 수 있습니다. 대상 시스템에서 요구하는 인코딩을 확인해야 합니다.

TXT 변환 시 주의할 점

Excel을 TXT로 변환할 때 다음과 같은 데이터 손실 가능성을 인지해야 합니다:

  • 서식 손실: 셀 배경색, 글꼴, 테두리 등 시각적 서식은 TXT에 포함되지 않습니다.
  • 수식 손실: 수식은 계산된 값으로 변환되며, 수식 자체는 저장되지 않습니다.
  • 차트 및 이미지 손실: TXT는 텍스트 데이터만 저장하므로 차트, 이미지, 도형 등은 포함되지 않습니다.
  • 여러 시트: TXT는 단일 시트만 지원하므로, 여러 워크시트가 있는 경우 각각 별도의 파일로 저장해야 합니다.

라이브러리 선택 시 고려사항

Excel 파일 처리를 위한 라이브러리를 선택할 때는 다음 사항을 고려해야 합니다:

  1. Microsoft Office 의존성: 일부 라이브러리는 Microsoft Office가 설치되어 있어야 작동합니다. 서버 환경에서는 Office 설치가 어려울 수 있으므로 독립적으로 작동하는 라이브러리를 선택하는 것이 좋습니다.

  2. 지원하는 형식: .xls, .xlsx, .xlsm 등 다양한 Excel 형식을 지원하는지 확인합니다.

  3. 라이선스: 무료 버전과 상용 버전의 기능 제한을 확인해야 합니다. 무료 버전의 경우 행 수나 시트 수에 제한이 있을 수 있습니다.

  4. 성능: 대용량 파일을 처리할 때의 성능을 고려해야 합니다.

마무리

C#에서 Excel 워크시트를 TXT 파일로 변환하는 것은 적절한 라이브러리를 사용하면 간단하게 구현할 수 있습니다. SaveToFile 메서드를 사용하여 파일 이름, 구분자, 인코딩을 지정함으로써 다양한 환경에 맞는 TXT 파일을 생성할 수 있습니다.

레거시 시스템 연동, 데이터 분석 준비, 배치 자동화 등 다양한 상황에서 Excel 데이터를 TXT로 변환하는 기능을 활용할 수 있습니다. 변환 시 서식과 수식이 손실된다는 점을 인지하고, 대상 시스템의 요구사항에 맞는 구분자와 인코딩을 선택하시기 바랍니다.

0개의 댓글