xlsx 파일은 Microsoft Excel에서 사용하는 스프레드시트 파일 형식입니다.
정식 명칭은 Office Open XML Spreadsheet이며, 확장자가 .xlsx로 끝납니다.
📌 주요 특징:
- 표 형식 데이터 저장: 행(Row)과 열(Column)로 이루어진 셀(Cell)에 데이터를 입력 가능.
- 다양한 데이터 유형: 숫자, 텍스트, 날짜, 수식, 차트, 조건부 서식 등 저장 가능.
- 여러 시트(Sheet) 포함: 하나의 파일 안에 여러 개의 워크시트 보관 가능.
- 압축 및 XML 기반 구조: .xls(구 버전, 이진 형식)과 달리 .xlsx는 XML을 기반으로 압축 저장되어 용량이 작고, 다른 프로그램에서도 호환성이 좋음.
- 사용 프로그램: Microsoft Excel, Google Sheets, LibreOffice Calc 등 다양한 스프레드시트 프로그램에서 열 수 있음.
👉 쉽게 말해, .xlsx는 우리가 흔히 "엑셀 파일"이라고 부르는 최신 표 형식 문서예요.
엑셀 파일 형식인 .xls와 .xlsx의 차이를 이해하려면, 먼저 XML이 무엇인지부터 짚고 넘어가야 해요.
🔹 XML이란?
XML (eXtensible Markup Language, 확장 가능한 마크업 언어)
- 데이터를 구조화해서 표현하는 언어예요.
- HTML처럼 태그(<tag>)를 쓰지만, 데이터의
모양을 표현하는 게 아니라 데이터 자체의 의미와 구조를 정의하는 데 사용돼요.
예시:
<학생>
<이름>홍길동</이름>
<나이>20</나이>
<학과>컴퓨터공학</학과>
</학생>
→ 이런 방식으로 데이터를 사람이 읽고, 컴퓨터도 이해할 수 있도록 저장 가능.
🔹 XLS vs XLSX 차이
- .xls (Excel 97~2003 형식)
- 이진(Binary) 형식으로 저장.
- XML 기반이 아니고, 내부 구조를 일반 텍스트로 확인하기 어려움.
- 파일 용량이 상대적으로 큼.
- .xlsx (Excel 2007 이후 형식)
- XML 기반(Open XML) + 압축(zip) 구조.
- 내부를 풀어보면 XML 파일들이 들어 있음.
(예: sheet1.xml, styles.xml, sharedStrings.xml 등) - 호환성이 좋아서 Excel 외 다른 프로그램(구글 시트, 파이썬 등)에서도 쉽게 다룸.
- 용량이 가볍고 손상 위험도 적음.
✅ 정리하면:
- .xls = 오래된 방식, 이진(Binary) 형식
- .xlsx = 새로운 방식, XML 기반 형식
🔹 1. 이진 형식(Binary Format)이란?
- 컴퓨터는 모든 데이터를 **0과 1(비트)**로 저장해요.
- 이진 형식 파일은 사람이 읽기 어렵고, 오직 컴퓨터가 해석하도록 만들어진 구조예요.
예시:
- .xls 파일은 내부적으로 이런 식으로 0과 1로만 구성된 복잡한 규칙(Excel만 알 수 있는 구조)으로 저장돼요.
- 우리가 메모장으로 .xls 파일을 열면 깨진 문자처럼 보이는 이유가 이 때문이에요.
즉, 이진 형식 = 압축률은 좋고 처리 속도도 빠르지만, 사람이 이해하거나 다른 프로그램에서 호환하기 어려움.
🔹 2. XML 형식이란?
- 텍스트 기반이라서 사람이 직접 읽을 수도 있고, 다른 프로그램이 분석하기도 쉬움.
- 데이터를 **태그(tag)**로 감싸서 구조화함.
예:
<학생>
<이름>홍길동</이름>
<나이>20</나이>
</학생>
🔹 3. Open XML이란?
- Microsoft가 Excel, Word, PowerPoint 같은 오피스 문서 저장 형식을 국제 표준(XML 기반) 으로 공개한 것.
- .xlsx (Excel), .docx (Word), .pptx (PowerPoint)가 모두 Open XML 형식이에요.
- 사실 .xlsx 파일은 ZIP 압축된 폴더에 불과해요. 압축을 풀면 안에 여러 개의 .xml 파일이 들어 있어요.
예: sample.xlsx 압축 풀기 →
[Content_Types].xml
_rels/.rels
xl/workbook.xml
xl/worksheets/sheet1.xml
xl/sharedStrings.xml
xl/styles.xml
즉, .xlsx는 "엑셀 데이터를 XML로 나눠서 저장하고, ZIP으로 묶은 파일"이에요.
✅ 정리
- 이진 형식(.xls) = 사람은 못 읽고 Excel만 이해할 수 있는 0과 1 기반 저장 방식.
- XML 형식 = 텍스트 기반이라서 사람이 읽을 수 있고, 다양한 프로그램에서 다루기 쉬움.
- Open XML(.xlsx) = XML을 기반으로 만든 오피스 문서 국제 표준 → 압축해서 용량 절약 + 호환성 강화.
.rels 파일은 Open XML 문서 구조에서 "관계(Relationships)"를 정의하는 XML 파일이에요.
🔹 .rels 파일의 역할
엑셀(.xlsx), 워드(.docx), 파워포인트(.pptx) 같은 Open XML 문서는 여러 개의 XML 파일로 나눠져 있어요.
그런데 이 파일들이 서로 어떤 관계를 맺고 있는지를 정의해야 하죠.
이때 사용하는 게 .rels 파일이에요.
즉, "이 문서의 메인 파트는 어디고, 이 파트는 어떤 리소스를 참조하는가?"를 알려주는 지도(map) 같은 역할을 해요.
🔹 .rels 파일 예시
예를 들어 sample.xlsx를 압축 풀면 _rels/.rels라는 파일이 있어요.
안의 내용은 대략 이런 식입니다:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1"
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
Target="xl/workbook.xml"/>
</Relationships>
해석:
- Relationship: 관계 정의 태그
- Id="rId1": 관계를 식별하는 고유 ID
- Type: 어떤 종류의 관계인지 (예: 오피스 문서, 스타일, 이미지 등)
- Target: 실제 파일 경로 (xl/workbook.xml → 이게 실제 엑셀 워크북 본체)
🔹 왜 필요한가?
- 하나의 .xlsx 안에는 workbook.xml, sheet1.xml, styles.xml, sharedStrings.xml 등 여러 XML이 들어있는데,
.rels 파일이 이걸 연결해줘요. - 만약 이미지, 차트, 외부 참조 링크가 있다면 그것들도 .rels에서 어떤 파일과 연결되는지 기록돼요.
즉, .rels 파일은
👉 "이 문서가 어떤 구성 요소들로 이루어져 있고, 각각이 어떻게 연결되는지 설명하는 설계도"예요.
🔹 1. _rels 폴더와 .rels 파일 이름에 언더바(_)가 붙는 이유
Open XML 구조에서 .rels는 특수한 시스템용 관계(Relationships) 정의 파일이에요.
- _rels/ 라는 폴더는 **"Relationships를 담는 전용 폴더"**라는 약속된 이름입니다.
- 그 안에 .rels 파일이 있으면 → 이게 해당 패키지(즉, 문서 전체)의 최상위 관계 정의 파일이 돼요.
즉:
- _rels/.rels → 문서 전체의 루트 관계(Relationships) 정의
- xl/_rels/workbook.xml.rels → 특정 파일(workbook.xml)이 참조하는 관계 정의
👉 언더바 _는 사용자가 만든 파일이 아니라 시스템에서 자동 관리하는 특수 폴더라는 표시라고 이해하면 돼요.
🔹 2. <?xml ... ?> 태그의 의미
이건 **XML 선언문(XML Declaration)**이라고 부릅니다.
보통 XML 파일 맨 위에 등장해요.
예:
각 속성의 의미
- version="1.0" → XML 규격 버전 (대부분 1.0)
- encoding="UTF-8" → 문서가 어떤 문자 인코딩을 쓰는지 (UTF-8, EUC-KR 등)
- standalone="yes" → 이 문서가
외부 DTD(DocumentTypeDefinition) 없이독립적으로 해석 가능하다는 뜻
즉, 이 선언문은
👉 "이 문서는 XML 1.0 규격을 따르고, UTF-8로 인코딩되어 있으며, 독립적으로 읽을 수 있어요"
라고 컴퓨터(파서)에게 알려주는 역할이에요.
✅ 정리
- _rels/.rels → Open XML 문서 구조에서 관계(Relationships)를 정의하는 특수 시스템 파일. _는 "시스템 관리용"이라는 약속.
- <?xml ... ?> → XML 파일의 선언문. 문서 버전, 문자 인코딩, 독립성 여부 등을 설명.
👌 XML의 기본 개념에서 조금 더 깊게 들어가보면 이해가 될 거예요.
🔹 1. DTD(Document Type Definition)란?
- **XML 문서의 규칙(문법)**을 정의하는 문서예요.
- XML은 누구나 태그를 마음대로 만들 수 있지만, 경우에 따라 “이 문서 안에는 어떤 태그들이 올 수 있고, 어떤 구조를 가져야 한다” 같은 규칙이 필요할 수 있거든요.
- 그 규칙을 명시하는 게 DTD예요.
예를 들어, 학생 정보를 담는 XML이 있다고 합시다:
<학생>
<이름>홍길동</이름>
<나이>20</나이>
</학생>
이때 대응하는 DTD는 이렇게 생길 수 있어요:
<!ELEMENT 학생 (이름, 나이)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 나이 (#PCDATA)>
👉 "<학생> 태그에는 이름과 나이가 들어가야 하며, 그 안의 값은 문자 데이터여야 한다"는 규칙을 정의한 거죠.
🔹 2. 내부 DTD vs 외부 DTD
DTD는 XML 안에 포함될 수도 있고(XML 내부 DTD), 바깥 파일로 따로 존재할 수도 있어요(XML 외부 DTD).
- 내부 DTD (XML 문서 안에 직접 작성)
<?xml version="1.0"?>
<!DOCTYPE 학생 [
<!ELEMENT 학생 (이름, 나이)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 나이 (#PCDATA)>
]>
<학생>
<이름>홍길동</이름>
<나이>20</나이>
- 외부 DTD (다른 파일에서 불러오기)
<?xml version="1.0"?>
<!DOCTYPE 학생 SYSTEM "student.dtd">
<학생>
<이름>홍길동</이름>
<나이>20</나이>
</학생>
여기서 "student.dtd"라는 별도 파일에 규칙이 정의돼 있어요.
🔹 3. standalone="yes" vs standalone="no"
XML 선언문에서:
- standalone="yes"
→ 이 XML 문서는 외부 DTD에 의존하지 않고도 해석 가능하다는 뜻.
→ 즉, 문서 안의 태그와 데이터만 봐도 의미를 알 수 있다. - standalone="no"
→ 이 문서를 올바르게 해석하려면 반드시 외부 DTD 같은 추가 리소스가 필요하다.
→ 예를 들어 <학생> 태그가 어떤 구조를 가져야 하는지 문서 자체에는 없고, 바깥 DTD에 정의돼 있다면 "no".
✅ 정리
- DTD = XML 문서의 규칙을 정의하는 문서.
- 외부 DTD = XML 바깥에 따로 저장된 규칙 파일.
- 독립적으로 해석 불가능하다 = XML만 봐서는 구조를 알 수 없고, 반드시 외부 DTD 파일을 참조해야 한다는 뜻.
XML 선언문에서 standalone 속성을 생략하면 기본값은 "no"가 아니라 "yes" 입니다.
🔹 W3C XML 규격 정의
XML 1.0 명세에서는 이렇게 설명돼요:
- standalone 속성이 없으면 → 기본값은 "no"가 아니라 "yes"
- 따라서 다음 두 선언은 사실상 같은 의미예요:
🔹 의미 정리
- standalone="yes" → 이 문서는 외부 DTD 같은 추가 정보가 없어도 해석 가능.
- standalone="no" → 외부 DTD 같은 추가 정의를 참고해야만 올바르게 해석 가능.
- 속성 생략 → 기본적으로 "yes" 취급.
👉 즉, 우리가 흔히 보는 <?xml version="1.0" encoding="UTF-8"?> 같은 선언은 사실상 "standalone 문서"로 간주되는 거예요.
👍 이제 XML 선언문 속성 중 encoding을 파헤쳐 볼 차례네요.
🔹 1. encoding이란?
- encoding은 문자 인코딩 방식을 지정하는 속성입니다.
- 즉, 이 XML 문서가 **0과 1(바이트)**로 저장돼 있을 때, 그걸 어떤 규칙에 따라 **문자(사람이 읽을 수 있는 글자)**로 해석할지를 정의하는 거예요.
👉 쉽게 말하면, "이 파일은 어떤 언어/문자 세트를 어떤 규칙으로 저장했는지"를 알려주는 안내문.
예시:
<?xml version="1.0" encoding="UTF-8"?>
→ 이 문서는 UTF-8 인코딩으로 저장되었으니, 파서는 UTF-8 규칙대로 읽어야 한다는 뜻.
🔹 2. 대표적인 문자 인코딩 방식들
문자 인코딩은 정말 다양하지만, 주요한 것들을 몇 가지 소개드릴게요:
✅ 유니코드 계열 (현대 표준)
- UTF-8
- 가변 길이 인코딩 (1~4바이트)
- 전 세계 거의 모든 문자를 표현 가능
- 웹, XML, JSON 등에서 사실상 표준
- UTF-16
- 대부분 문자를 2바이트로 저장 (일부는 4바이트)
- Windows 시스템, 자바 내부에서 자주 사용됨
- UTF-32
- 모든 문자를 무조건 4바이트로 저장
- 단순하지만 비효율적 → 거의 안 씀
✅ 지역(로컬) 문자 인코딩
- ISO-8859-1 (Latin-1) → 서유럽 언어용, 옛날 HTML에서 흔히 보임
- EUC-KR → 한국어 전용 인코딩 (과거 Windows, Unix에서 많이 씀)
- Shift_JIS → 일본어 인코딩
- GB2312 / GBK / GB18030 → 중국어 인코딩
✅ 옛날 대표
- ASCII
- 7비트(128문자)만 표현 가능
- 영어 알파벳, 숫자, 기호만 지원
- 모든 인코딩의 뿌리
🔹 3. 왜 중요한가?
예를 들어 같은 바이너리 데이터를 EUC-KR로 읽으면 "안녕하세요"가 제대로 보이지만, UTF-8로 읽으면 깨진 글자가 나올 수 있어요.
👉 그래서 XML 선언에서 encoding을 반드시 명시해주면, 파서가 올바른 규칙으로 문서를 읽을 수 있는 거예요.
✅ 정리
- encoding = "문자를 0과 1로 어떻게 저장했는가"를 나타내는 규칙
- 대표 방식 = UTF-8(표준), UTF-16, UTF-32, EUC-KR, Shift_JIS, ISO-8859-1 등
- 실무 표준 = 거의 항상 UTF-8 (웹, XML, JSON, DB 등 다 표준으로 씀)=
이진(Binary) 형식이나 인코딩의 핵심이 바로 바이너리 데이터예요.
🔹 1. 바이너리 데이터란?
- 컴퓨터는 기본적으로 **0과 1(비트, bit)**만 이해할 수 있어요.
- 이 0과 1을 여러 개 모아서 바이트(byte) 단위(= 8비트)로 저장합니다.
- 이렇게 저장된 0과 1의 나열을 통틀어 **바이너리 데이터(binary data)**라고 부릅니다.
즉, 우리가 보는 텍스트, 이미지, 음악, 동영상 전부 결국에는 바이너리 데이터예요.
🔹 2. 예시: 문자 "A"
- 문자 "A"는 사람이 읽을 수 있는 텍스트죠.
- 하지만 컴퓨터 안에서는 이렇게 저장됩니다:
- ASCII 코드에서 "A" = 65
- 65를 2진수로 바꾸면 01000001
- 실제 저장된 건 이 8비트 이진 데이터예요.
👉 우리가 텍스트 에디터에서 "A"를 본다는 건, 사실은 01000001이라는 이진 데이터를 ASCII 규칙에 따라 문자로 변환한 결과예요.
🔹 3. 바이너리 데이터와 텍스트 데이터의 차이
- 텍스트 데이터: 바이너리 데이터를 특정 문자 인코딩 규칙(UTF-8, ASCII 등)에 따라 문자로 변환해서 읽을 수 있는 것.
- 바이너리 데이터: 그저 0과 1의 나열, 해석 규칙이 없으면 의미를 알 수 없음.
예를 들어, 이미지 파일(.jpg)을 메모장으로 열면 깨진 글자처럼 보이죠?
👉 이유는 JPG는 텍스트가 아니라 이미지 규칙에 맞춘 바이너리 데이터라서 텍스트로 해석할 수 없기 때문이에요.
🔹 4. 실제 예시
문자 "안"을 UTF-8로 저장해보면:
- "안" = U+C548 (유니코드 코드포인트)
- UTF-8로 인코딩하면 → EC 95 88 (16진수)
- 이걸 2진수로 쓰면 → 11101100 10010101 10001000
- 즉, "안" 한 글자가 사실은 3바이트짜리 바이너리 데이터로 저장되는 거예요.
✅ 정리
- 바이너리 데이터 = 컴퓨터가 이해하는 0과 1의 나열
- 사람이 보려면 반드시 **해석 규칙(인코딩, 포맷)**이 필요함
- 텍스트, 이미지, 음악, 동영상 전부 결국은 바이너리 데이터일 뿐
🔹 1. 비트(bit)
- **bit = binary digit (이진 숫자)**의 줄임말.
- 컴퓨터에서 표현할 수 있는 가장 작은 정보 단위.
- 값은 항상 0 또는 1 두 가지뿐이에요.
👉 예: 0 / 1
🔹 2. 바이트(byte)
- 1 byte = 8 bit
- 즉, 0과 1이 8개 모여서 1바이트를 이루어요.
- 컴퓨터에서 데이터를 다룰 때 기본 단위로 많이 사용합니다.
👉 예: 01000001 (8비트 = 1바이트)
이 값은 **ASCII 인코딩에서 문자 "A"**를 의미해요.
🔹 3. 정리
- 1 비트 (bit) → 0 또는 1 (이진 숫자 하나)
- 8 비트 = 1 바이트 (byte)
- 1 KB (킬로바이트) = 1024 바이트
- 1 MB (메가바이트) = 1024 KB
- 1 GB (기가바이트) = 1024 MB
- … 이런 식으로 용량 단위를 이어감
🔹 4. 비트 vs 바이트 이해하기
예를 들어 숫자 5를 저장한다고 하면:
- 10진수 5 = 2진수 101
- 이걸 컴퓨터 메모리에 저장하면 보통 1바이트(8비트)로 맞춰서 → 00000101
즉, 실제로는 8개의 비트를 묶어 한 바이트 단위로 다루는 경우가 많아요.
✅ 정리 문장
- 비트(bit) = 0/1 한 자리
- 바이트(byte) = 비트 8개 묶음 → 컴퓨터의 기본 데이터 단위
'컴퓨터' 카테고리의 다른 글
| 자막 파일 확장자 .sub vs .smi :: -RARGB 란? (0) | 2025.09.30 |
|---|---|
| 웹사이트에서 .tmp 파일 생기는 이유? 다운로드 폴더에 있는 .tmp 는? (0) | 2025.09.30 |
| 확장자 .tmp 파일 이란? :: UUID vs GUID 차이점 비교 (0) | 2025.09.30 |
| .bat 파일 읽는 방법 (0) | 2025.09.30 |
| 오디오 관련 (0) | 2025.09.26 |
| windows 11 설치 최소 시스템 요구사항 (0) | 2025.09.11 |
| 프리볼트 전자제품:: 어댑터 / 플러그 어댑터의 필요성 (0) | 2025.09.10 |
| 플러그 핀 지름 4.0mm vs 4.8mm (0) | 2025.09.10 |