mac에서 openpyxl 같은 라이브러리로 한글이 포함된 엑셀 파알을 만들고 이것을 윈도우에서 열어보면 한글 자음, 모음이 분리된 형태(ㅈㅏㅇㅡㅁ, ㅁㅗㅇㅡㅁㅇㅣ ㅂㅜㄴㄹㅣㄷㅗㅣㄴㄷㅏ)로 보이는 경우가 생긴다.
이건 Mac 과 Windows 가 서로 다른 Unicode Normalization Form 을 사용하기 때문인데 각 OS가 사용하는 방식은 아래와 같다.

Mac

NFD(Normalization Form Canonical Decomposition)
엑셀에 “한글입니다” 라고 저장하면 내부적으로 “ㅎㅏㄴㄱㅡㄹㅇㅣㅂㄴㅣㄷㅏ” 로 풀어서 저장하고 이것을 보여줄 때 “한글입니다” 로 조합하여 글자를 보여줌.

Windows

NFC(Normalization Form Canonical Composition)
엑셀에 “한글입니다” 라고 저장하면 그대로 “한글입니다” 로 조합된 글자를 보여줌.

그런데 둘 다 표준이어서 어느 한쪽의 문제가 아니라 OS 구현 철학의 문제이다.

따라서 mac에서 한글이 들어간 엑셀을 만들 때는 windows에서 사용할 것을 고려하여 NFC로 한글을 미리 변환하는 것이 좋다.

import glob
import os
import unicodedata

from openpyxl import Workbook

wb = Workbook(write_only=True)
ws = wb.create_sheet(title='FileName')

path = 'resource/documents'

files = glob.glob(os.path.join(path, '*.txt'))

for f in files:
    file_name = os.path.basename(f)
    file_name = unicodedata.normalize('NFC', file_name)
    ws.append([file_name])

wb.save('FileList.xlsx')

file_name = unicodedata.normalize('NFC', file_name) 이렇게 NFC로 변경하여 저장한다.