Python 리스트를 Excel로: 정리된 데이터 내보내기 및 서식 지정

발행: (2025년 12월 30일 오후 06:49 GMT+9)
10 min read
원문: Dev.to

Source: Dev.to

Allen Yang

Source:

파이썬 리스트를 엑셀에 쓰기

파이썬 리스트를 엑셀에 쓰기

오늘날 데이터 중심의 세상에서 파이썬은 데이터 처리와 자동화에 있어 가장 많이 사용되는 언어가 되었습니다. 실제 애플리케이션에서 매우 흔히 요구되는 작업은 처리된 데이터를—특히 파이썬 리스트 형태로 정리된 데이터를—엑셀 파일로 내보내어 공유, 시각화, 보고 또는 추가 분석에 활용하는 것입니다.

파이썬은 엑셀에 데이터를 쓰는 다양한 방법을 제공하지만, 많은 개발자들이 효율적이면서도 유연한 솔루션을 찾는 데 어려움을 겪습니다. 특히 서식 지정, 스타일링, 대용량 데이터 처리와 같은 요구가 있을 때 그렇습니다. 올바른 라이브러리를 선택하면 개발 속도와 출력 품질 모두에서 큰 차이를 만들 수 있습니다.

이 글에서는 Spire.XLS for Python을 사용해 파이썬 리스트 데이터를 엑셀 파일로 쓰는 방법을 살펴보겠습니다. 이 강력하고 개발자 친화적인 엑셀 라이브러리는 기본적인 데이터 내보내기를 넘어 고급 서식 지정, 정밀한 레이아웃 제어, 확장 가능한 데이터 처리를 지원하므로 자동화 워크플로와 보고서 생성에 매우 적합합니다.

환경 설정

Spire.XLS for Python은 Excel 파일을 프로그래밍 방식으로 생성, 읽기, 편집, 변환 및 인쇄할 수 있도록 설계된 전문 Excel 라이브러리입니다. 주요 장점 중 하나는 Microsoft Excel이나 Office가 설치되어 있지 않아도 동작한다는 점으로, 서버‑사이드 및 클라우드 환경에 특히 적합합니다.

이 라이브러리는 .xls, .xlsx, .xlsm, .xlt 등 다양한 Excel 형식을 지원합니다. 또한 워크북, 워크시트, 셀, 스타일, 차트, 수식, 주석 등을 다루기 위한 풍부한 API를 제공합니다.

리스트 데이터를 Excel에 기록할 때 Spire.XLS for Python을 사용하면 다음과 같은 이점을 얻을 수 있습니다:

  • 데이터를 정확히 원하는 위치에 기록할 수 있음
  • 셀 수준의 서식 및 스타일 적용 가능
  • 다양한 데이터 유형을 자동으로 처리
  • 구조가 잘 잡히고 시각적으로 깔끔한 Excel 파일 생성

설치

시작하기 전에, Python용 Spire.XLS가 환경에 설치되어 있는지 확인하세요. pip을 사용하여 쉽게 설치할 수 있습니다:

pip install Spire.XLS

설치가 완료되면, Python 프로젝트에서 직접 import하고 사용할 수 있습니다.

Source:

Python 리스트를 Excel에 쓰기: 기본 예제

시나리오

각 내부 리스트가 데이터의 한 행을 나타내는 리스트가 있다고 가정합니다:

data = [
    ["Department", "Budget (USD)", "Actual Spend (USD)", "Difference"],
    ["Marketing", 80000, 76500, -3500],
    ["Engineering", 150000, 162300, 12300],
    ["Administration", 50000, 48200, -1800]
]

코드 예제

from spire.xls import *
from spire.xls.common import *

def write_simple_list_to_excel(data_list, file_path="simple_data.xlsx"):
    """
    Write a simple Python list to an Excel file.
    :param data_list: List containing data, where each sublist represents a row.
    :param file_path: Output Excel file path.
    """
    # Create a new workbook
    workbook = Workbook()
    # Get the first worksheet
    sheet = workbook.Worksheets[0]

    # Iterate through the list and write data to cells
    for row_idx, row_data in enumerate(data_list):
        for col_idx, cell_value in enumerate(row_data):
            # Assign values to corresponding cells (Spire.XLS uses 1‑based indexing)
            sheet.Range[row_idx + 1, col_idx + 1].Value = str(cell_value)

    # Autofit column widths
    sheet.Range.AutoFitColumns()

    # Save the workbook as an Excel file
    workbook.SaveToFile(file_path, FileFormat.Version2016)
    workbook.Dispose()
    print(f"Data successfully written to: {file_path}")

# Call the function
write_simple_list_to_excel(data)

출력 미리보기

Python write list to Excel

핵심 포인트 설명

  • Workbook() 은 새로운 Excel 워크북을 생성합니다.
  • workbook.Worksheets[0] 은 기본 워크시트를 가져옵니다.
  • Range[row, column] 은 1‑베이스 인덱싱을 사용해 셀을 지정합니다.
  • Value 는 셀에 데이터를 할당하며, 문자열과 숫자를 자동으로 처리합니다.
  • SaveToFile() 은 워크북을 .xlsx 형식으로 저장합니다.
  • Dispose() 은 리소스를 해제하고 메모리 누수를 방지합니다.

중요 참고: Spire.XLS에서 행과 열 인덱스는 0이 아니라 1부터 시작하므로 row_idx + 1col_idx + 1을 사용합니다.

고급 사용법: 서식 및 복합 데이터 유형

시나리오

  • 첫 번째 행은 서식이 적용된 헤더로 처리되어야 합니다.
  • 데이터에는 올바르게 표시되어야 하는 날짜 및 타임스탬프가 포함됩니다.

코드 예시 (부분)

from spire.xls import *
import datetime

def write_advance():
    # ... (implementation continues)

(고급 예시의 나머지는 원본 기사에 계속됩니다.)

헤더와 서식을 포함한 리스트 데이터를 Excel에 쓰기

def write_advanced_list_to_excel(data_list, file_path="advanced_data.xlsx"):
    """
    Write list data with headers and formatting to Excel.
    :param data_list: List containing data, first row as headers.
    :param file_path: Output Excel file path.
    """
    workbook = Workbook()
    sheet = workbook.Worksheets[0]

    # Write header row with styles
    header_data = data_list[0]
    for col_idx, header_text in enumerate(header_data):
        header_cell = sheet.Range[1, col_idx + 1]
        header_cell.Value = header_text
        header_cell.Style.Font.IsBold = True
        header_cell.Style.KnownColor = ExcelColors.LightYellow
        header_cell.Style.HorizontalAlignment = HorizontalAlignType.Center

    # Write data rows
    for row_idx, row_data in enumerate(data_list[1:]):
        for col_idx, cell_value in enumerate(row_data):
            cell = sheet.Range[row_idx + 2, col_idx + 1]

            if isinstance(cell_value, datetime.datetime):
                cell.DateTimeValue = DateTime.Parse(str(cell_value))
                cell.Style.NumberFormat = "yyyy-mm-dd hh:mm"
            elif isinstance(cell_value, datetime.date):
                cell.DateTimeValue = DateTime.Parse(str(cell_value))
                cell.Style.NumberFormat = "yyyy-mm-dd"
            else:
                cell.Value = str(cell_value)

    # Auto‑fit columns
    for i in range(1, 5):
        sheet.AutoFitColumn(i)

    workbook.SaveToFile(file_path, FileFormat.Version2016)
    workbook.Dispose()
    print(f"Formatted Excel file created: {file_path}")

날짜가 포함된 샘플 데이터

advanced_data = [
    ["Order ID", "Customer", "Amount (USD)", "Order Date"],
    ["SO-20231026001", "Shenzhen Zhilian Tech", 32800, datetime.date(2023, 10, 26)],
    ["SO-20231025002", "Beijing Ruida Info", 15600,
     datetime.datetime(2023, 10, 25, 14, 30)],
    ["SO-20231027003", "Shanghai Qiming Systems", 48900,
     datetime.date(2023, 10, 27)],
    ["SO-20231028004", "Hangzhou CloudData", 21450,
     datetime.datetime(2023, 10, 28, 9, 15)]
]

write_advanced_list_to_excel(advanced_data)

출력 미리보기

고급 파이썬 Excel 서식

주요 특징

  • 셀 스타일링 via cell.Style (폰트, 색상, 정렬)
  • 날짜 처리 using DateTimeValue and NumberFormat
  • 자동 열 크기 조정 with AutoFitColumn()

오류 처리 및 성능 최적화

일반적인 문제와 해결책

IssueSolution
Invalid file paths or permissions출력 디렉터리가 존재하고 쓰기 권한이 있는지 확인하십시오.
Incorrect data types날짜 관련 데이터에는 DateTimeValue와 같은 전용 속성을 사용하십시오.
Large datasets and memory usage배치 쓰기 또는 내보내기 전에 데이터를 전처리하는 것을 고려하십시오.

권장 패턴

try:
    workbook = Workbook()
    # Excel operations
    workbook.SaveToFile(file_path, FileFormat.Version2016)
except Exception as e:
    print(f"Error writing Excel file: {e}")
finally:
    if 'workbook' in locals():
        workbook.Dispose()

성능 팁

  • 워크북은 데이터를 모두 쓴 후에 한 번만 저장하십시오.
  • 가능하면 개별 셀 대신 범위에 스타일을 적용하십시오.
  • Excel 라이브러리에 전달하기 전에 데이터를 전처리하십시오.
  • 리소스를 해제하려면 항상 Dispose()를 호출하십시오.

결론

이 문서에서는 Spire.XLS for Python을 사용하여 Python 리스트 데이터를 Excel로 내보내는 방법을 기본 데이터 쓰기부터 시작해 고급 서식 지정 및 견고한 오류 처리까지 시연했습니다. 보고서를 생성하거나, 분석 결과를 내보내거나, 자동화된 워크플로를 구축하든, 이 접근 방식은 유연성과 신뢰성을 모두 제공합니다.

차트, 수식, 데이터 검증과 같은 추가 기능을 탐색함으로써 Spire.XLS for Python을 데이터‑처리 파이프라인에 더욱 통합하고, 자동화 잠재력을 한층 더 높일 수 있습니다.

Back to Blog

관련 글

더 보기 »

Lyra: 명령줄 어시스턴트

나는 어시스턴트의 골격과 메인 루프를 코딩했다. 음성이나 AI 어시스턴트보다 CLI 어시스턴트를 선택한 이유는 하드웨어 제한 때문이다. 나는…