본문 바로가기
컴퓨터

확장자 .xlsx 란? :: .xls vs .xlsx 차이점 비교 :: 비트와 바이트

by 로맨틱스터디 2025. 9. 30.
728x90
반응형

xlsx 파일은 Microsoft Excel에서 사용하는 스프레드시트 파일 형식입니다.
정식 명칭은 Office Open XML Spreadsheet이며, 확장자가 .xlsx로 끝납니다.

 

📌 주요 특징:

  • 표 형식 데이터 저장: 행(Row)과 열(Column)로 이루어진 셀(Cell)에 데이터를 입력 가능.
  • 다양한 데이터 유형: 숫자, 텍스트, 날짜, 수식, 차트, 조건부 서식 등 저장 가능.
  • 여러 시트(Sheet) 포함: 하나의 파일 안에 여러 개의 워크시트 보관 가능.
  • 압축 및 XML 기반 구조: .xls(구 버전, 이진 형식)과 달리 .xlsx는 XML을 기반으로 압축 저장되어 용량이 작고, 다른 프로그램에서도 호환성이 좋음.
  • 사용 프로그램: Microsoft Excel, Google Sheets, LibreOffice Calc 등 다양한 스프레드시트 프로그램에서 열 수 있음.

👉 쉽게 말해, .xlsx는 우리가 흔히 "엑셀 파일"이라고 부르는 최신 표 형식 문서예요.

 

728x90

 

엑셀 파일 형식인 .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 파일 맨 위에 등장해요.

예:

 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

각 속성의 의미

  • version="1.0"XML 규격 버전 (대부분 1.0)
  • encoding="UTF-8" → 문서가 어떤 문자 인코딩을 쓰는지 (UTF-8, EUC-KR 등)
  • standalone="yes" → 이 문서가 외부 DTD(Document Type Definition) 없이 독립적으로 해석 가능하다는 뜻

즉, 이 선언문은
👉 "이 문서는 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"
  • 따라서 다음 두 선언은 사실상 같은 의미예요:
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8" standalone="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개 묶음 → 컴퓨터의 기본 데이터 단위
728x90
반응형