5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
해결

파일 형식오류 열기 안되는 문제

가을남자
11월 24일 조회 1,001

정상적으로 저장되었던 파일이 다시 열기하면 파일 형식이 잘못되었다고 열리지 않습니다.

  1. 파일의 특징

         -. M365 버전 / 윈11 입니다.

         -. 파워쿼리를 이용하여 웹의 내용을 가져오는 쿼리문이 들어 있습니다.

         -. 저장한 PC가 아닌 다른 PC에서 열었을 경우가 더 빈번합니다.         

      2. 해결 제시 내용

         -. 파일 확장자를 'XLSX'에서 'XLSM 또는 XLS, ZIP으로 압축후 열기'로 변경해 본다.

         -. 파일 선택후 '열기/복구' 방법

         -. 엑셀 옵션의 '보안센터' '신뢰할 수 있는 위치 추가'

         -. 파워쿼리 '캐시 삭제'

어떤 경우에도 해결이 안되네요.
추가적인 보안 설정이나 프로그램을 사용하고 있지 않습니다.

빈번하게 발생하고 있어서 근본적인 원인과 해결책을 알고 싶어서 혹시 경험하신 분이 조언을 구합니다.

     

    댓글 4

    더블유에이 11월 24일

    혹시 회사에서 파수 DRM 을 쓰고 계신가요? 계열사에서 보내준 DRM 걸린 파일을 열면 말씀하신 오류가 왕왕 발생해서 애먹었던 적이 있습니다

    가을남자 작성자 11월 24일

    @더블유에이 님 딱히 DRM 프로그램을 사용하지 않늣 것으로 압니다.

    집에서 작성한 파일도 자리를 다른 장소로 옮겨서

    ㅡ다른 PC(노트북)로 옮겨ㅡ 열었을 때도

    같은 현상이 있습니다.

    당면히 인터넷상 저장 매체가 아닌 동일한

    외장하드에 저장했습니다.

    더블유에이 12월 1일

    @가을남자 님 아래 답변을 참고하니 인코딩 문제일 수도 있겠군요..

    확인을 따로 해보셔야 할 것 같습니다.

    수메리안 채택된 답변 11월 24일

    안녕하세요~

    올려주신 오류는
    M365에서 웹 크롤링(Power Query) 데이터를 사용하는 파일을 저장한 뒤,
    다른 PC에서 열 때 ‘파일 형식이 잘못되었다’고 뜨면서 열리지 않는 문제로 정리할 수 있을 듯 합니다.


    결론부터 말씀드리면,

    물론 다양한 견해들이 있고,
    아래 답변은 기술적 오류가 있을 수 있기 때문에
    참고만 해주세요.


    전형적인 내부 XML 구조 손상으로
    특히 Power Query로 웹 데이터를 Excel로 저장 과정에서 발생하는
    sharedStrings.xml 이나 sheetN.xml 파손으로 보는 것이 가장 적절한 거 같습니다.


    1. 왜 XML 구조가 깨질까요?

    Excel의 .xlsx 파일은 사실 압축된 XML 묶음(zip)으로

    [xlsx 구조]

    https://www.loc.gov/preservation/digital/formats/fdd/fdd000398.shtml

    [sharedStrings.xml이 깨진 보고]

    https://learn.microsoft.com/en-us/answers/questions/4900833/xl-sharedstrings-xml-part-with-xml-error-%28strings%29

    즉, 파일이 깨졌다는 것은
    내부의 XML 중 하나가 잘못된 문자 또는 잘못된 구조로 저장되었다는 뜻입니다.

    예를 들어 xlsx를 zip으로 바꾸고 압축을 풀면(아니면 바로 마우스 오른쪽 버튼 클릭 후 압축풀기) 다음 구조가 존재합니다.

    _rels
    docProps
    xl
    L worksheets
    L sharedStrings.xml
    L styles.xml


    여기에 들어 있는 파일들은 모두 텍스트(XML)입니다.
    XML은 eXtensible Markup Language로
    아주 간단히 말하면 "데이터에 꼬리표(tag)를 붙인 텍스트 구조"입니다.

    Sheet1.xml

    xmlns:xr3="http://schemas.microsoft.com/office/spreadsheetml/2016/revision3" xr:uid="{729C2D6F-829E-4581-950D-105953E4519D}"><sheetPr codeName="Sheet2"><tabColor theme="4" tint="0.79998168889431442"/></sheetPr><dimension ref="A2:T16"/><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="I18" sqref="I18"/></sheetView></sheetViews><sheetFormatPr defaultRowHeight="16.5" x14ac:dyDescent="0.3"/><cols><col min="4" max="4" width="13" customWidth="1"/><col min="7" max="7" width="13.875" customWidth="1"/><col min="9" max="9" width="19.625" customWidth="1"/><col min="13" max="13" width="12" customWidth="1"/></cols><sheetData><row r="2" spans="1:20" s="17" customFormat="1" ht="40.5" x14ac:dyDescent="0.3"><c r="A2" s="28" t="s"><v>24</v></c><c r="B2" s="1" t="s"><v>0</v></c><c r="C2" s="2" t="s"><v>1</v></c><c r="D2" s="3" t="s"><v>2</v></c><c r="E2" s="4" t="s"><v>3</v></c><c r="F2" s="5" t="s"><v>4</v></c><c r="G2" s="6" t="s">


    가령,

    회원정보 홍길동 30 으로 기록하면,
    컴퓨터는 단순한 문자열로 인식하지만

    회원정보.xml 로 다음과 같이 표시하면

    <회원정보>
    <이름>홍길동</이름>
    <나이>30</나이>
    </회원정보>

    비로소 회원정보 데이터가 됩니다.


    엑셀 시트도 XML로 저장되어 있으며,
    시트 서식, 셀 위치, 값 등이 모두 태그로 기록됩니다.



    2. 이때,
    웹 페이지의 HTML을 Power Query로 가져오면
    그 안에는 다음 같은 엑셀 XML이 허용하지 않는 문자가 섞여 있을 수 있습니다.

    제어문자(ASCII 0~31)
    null 문자
    보이지 않는 HTML 특수 공백(&nbsp;, U+00A0)
    잘못 인코딩된 UTF-8 → CP949 변환 실패 문자
    이모지, 특수 기호


    이런 것들은 메모리 상에서
    Power Query 미리보기에서는 정상처럼 보이지만,

    문제는
    엑셀 "저장" 순간에 이 텍스트가 sheet1.xml이나 sharedStrings.xml에 그대로 들어간다는 점입니다.
    그러면 XML 구조가 이렇게 될 수 있습니다.

    <v>정상글자 ■ (허용 안되는 문자) □ </v>

    한 글자만 깨져도 XML 파싱이 실패하여
    xlsx 전체가 "형식 오류"가 발생할 수 있습니다.



    3. 그럼 왜 "다른 PC에서 열 때" 더 자주 발생할까요?

    웹에서 가져오는 데이터는 PC마다 좀 다릅니다.

    인코딩 처리에 차이가 있고 (UTF-8 ↔ CP949)
    HTML 파싱 결과 차이도 있고
    Power Query 버전 차이도 있습니다.

    인터넷 브라우저의 WebView 버전의 차이나
    컬럼 구조가 PC마다 달라지기도 하고
    Null/빈 값이 어떤 PC에서는 특수문자로 들어오기도 합니다.


    이 때문에 PC A에서 저장한 Power Query 테이블이
    PC B에서는 다른 구조나 다른 문자열로 재해석되면서 파일이 깨졌다고 뜰 수 있습니다.


    4. 따라서 웹 데이터를 정제하는 M-code 단계가 반드시 추가되어야 합니다.

    아래는 가장 기본적인 정제 코드인데,

    // 모든 텍스트 열에서 정제 실행
    정제된_테이블 =
    Table.TransformColumns(
    이전단계,
    {
    {"제목열", each Text.Clean(Text.Trim(_)), type text},
    {"내용열", each Text.Clean(Text.Trim(_)), type text}
    }
    )

    Text.Clean은
    제어문자를 제거하고, XML 파괴 문자 제거에 필수적이고,

    Text.Trim은
    앞뒤 공백이나 유니코드 공백을 제거해 줍니다.



    6. 또한
    자동 새로고침(Refresh on open)을 끄거나
    백그라운드 새로고침도 끄고
    저장은 XLSX보다 XLSB가 훨씬 안전할 수 있습니다.


    이해하시는데 
    좀 도움이 되셨으면 좋겠습니다~

    질문답변 게시판의 최근 글

    스크랩 완료