본문 바로가기

데이터 타입을 제대로 지키는 스프레드시트 도구

엑셀, CSV, JSON, XML, PDF, OpenDocument 사이에서 표를 옮기는 도구 9가지입니다. 완전한 스프레드시트 프로그램이 필요한 세 가지 도구는 파일을 저희 서버로 보내며, 서버는 다운로드가 준비되는 즉시 파일을 삭제합니다.

도구 9개, 회원가입 없음, 워터마크 없음

시스템이 CSV를 요구한다면 엑셀 CSV 변환부터 시작하세요. CSV를 엑셀에서 열었더니 한 열에 뒤엉켜 들어간다면 CSV 엑셀 변환, 데이터를 코드에서 쓸 거라면 CSV JSON 변환이나 JSON CSV 변환이 맞습니다. 오래된 .xls 파일과 OpenDocument 통합 문서는 XLS XLSX 변환, ODS XLSX 변환, XLSX ODS 변환이 서식과 차트까지 유지하며 처리하고, PDF 엑셀 변환은 원본 파일을 받지 못한 보고서에서 표를 다시 꺼내 줍니다. 아래 내용은 거의 모든 스프레드시트 변환 문제의 원인, 즉 셀에 저장된 값과 화면에 보이는 값의 차이를 다룹니다.

엑셀 및 CSV

도구 2개

통합 문서, CSV 파일, PDF 사이에서 데이터를 옮깁니다.

셀에 실제로 저장되는 것

스프레드시트 셀에는 서로 다른 두 가지가 들어 있습니다. 값과 표시 형식입니다. 값 0.15는 15%, 0.15, £0.15, 15.00%로 표시될 수 있지만, 어떻게 표시되든 값은 조금도 바뀌지 않습니다. 스프레드시트에 관해 가장 쓸모 있는 사실이 바로 이것이며, 엑셀 CSV 변환이 추측하지 않고 “Excel에 표시된 대로”와 “원래 숫자, ISO 날짜” 중에서 고르게 하는 이유이기도 합니다. “Excel에 표시된 대로”는 화면에 보이는 텍스트를 그대로 씁니다. 15/03/2024, 1,234.50, 12%처럼요. Excel의 ‘다른 이름으로 저장’이 하는 방식이자, CSV를 사람이 읽을 때 기대하는 모습입니다. “원래 숫자, ISO 날짜”는 꾸밈없는 숫자와 ISO 날짜를 쓰며, 데이터베이스나 스크립트가 기대하는 형태입니다. 잘못 고르면 가져오기가 실패하는데, 마치 데이터가 손상된 것처럼 보입니다.

날짜는 날짜인 척하는 숫자입니다. 날짜 셀에는 일련번호(날짜 수)가 들어 있고, 어느 날부터 세는지는 파일마다 다릅니다. Windows용 Excel로 만든 통합 문서는 1900년부터, 예전 Mac용 Excel로 만든 통합 문서는 1904년부터 세며, 둘은 1,462일 차이가 납니다. 1900 체계는 더 이상합니다. 1900년 2월 29일이 있었다고 여기는데, Lotus 1-2-3에서 물려받은 버그를 호환성 때문에 지금까지 유지하고 있는 것입니다. 이 도구들은 통합 문서마다 기준일 플래그를 읽고 가짜 윤일도 정확히 제자리에 재현합니다. 그래서 여기서 변환한 날짜는 4년하고 하루씩 밀리지 않고 Excel에 보이는 날짜와 일치합니다.

수식과 그 결과는 나란히 저장됩니다. 통합 문서는 수식 텍스트와 마지막으로 계산한 값을 함께 보관합니다. 통합 문서끼리의 변환(ODS XLSX 변환, XLS XLSX 변환, XLSX ODS 변환)은 수식 자체를 두 프로그램의 함수 체계에 맞게 옮겨 담으므로, 편집해도 시트가 계속 다시 계산됩니다. 한쪽에만 있는 몇몇 함수는 바꿔 줄 때까지 #NAME?으로 표시됩니다. 스프레드시트 밖으로 나가는 CSV, JSON, XML에는 계산 결과만 담깁니다. 이 형식들에는 수식이라는 개념이 아예 없기 때문입니다.

CSV는 통합 문서의 대부분을 담을 수 없으며, 이를 모른 척하는 순간 데이터가 사라집니다. 시트가 없으므로 시트마다 별도 파일이 됩니다(모두 원하면 ZIP으로). 셀 타입이 없으므로 무언가가 추측하기 전까지 모든 필드는 텍스트입니다. 표시 형식, 수식, 차트, 이미지, 색상, 열 너비도 없습니다. 병합된 셀은 첫 셀에만 값을 넣든, 병합 범위 전체에 반복하든 어느 한쪽으로 정해야 합니다. 게다가 CSV는 구분 기호, 소수점 기호, 인코딩을 스스로 기록하지 않습니다. 그래서 소수점에 쉼표를 쓰는 유럽식 세미콜론 파일이 미국식 Excel에서는 한 열에 몰려 들어가고, 파일이 바이트 순서 표시(BOM)로 시작하지 않으면 악센트가 있는 글자가 깨집니다.

숫자처럼 보이는 텍스트에서 진짜 피해가 생깁니다. CSV를 열면 Excel은 셀마다 따로 추측합니다. 우편번호 01234는 앞의 0을 잃고, 16자리 주문 ID는 1.23457E+15가 되어 되돌릴 수 없으며, 유전자 이름 SEPT2는 날짜가 됩니다. 유전학계가 유전자 이름을 바꿨을 만큼 심각한 문제였습니다. CSV 엑셀 변환은 그 대신 열마다 한 번, 그 열의 모든 값을 보고 결정하며, 열 전체가 일치할 때만 변환합니다. 앞에 0이 붙은 값과 JavaScript 숫자로 정확히 담기에는 너무 긴 정수는 텍스트로 남습니다. JSON CSV 변환도 반대 방향에서 같은 주의를 기울여, 대부분의 변환기가 반올림해 버리는 64비트 ID를 한 자리도 빠짐없이 옮깁니다.

JSON과 XML도 저마다 잃는 것이 있습니다. JSON에는 날짜 타입이 아예 없어서 날짜는 텍스트로 전달되고, 받는 코드가 그것이 무엇인지 알아야 합니다. 데이터 XML에는 값만 담기고 서식, 차트, 이미지는 담기지 않습니다. 가져오기용 피드에는 딱 맞지만, 통합 문서를 온전히 보존하려는 목적이라면 원하는 결과가 아닙니다.

브라우저가 정말로 맞지 않는 경우

이 중 일곱 가지 도구는 파일을 어디에도 보내지 않습니다. 엑셀 CSV 변환, CSV 엑셀 변환, CSV JSON 변환, JSON CSV 변환, XML 엑셀 변환, 엑셀 XML 변환, PDF 엑셀 변환입니다. 아무것도 저장하지 않으므로, 급여 명세나 고객 목록 같은 파일에서 특히 중요합니다. 네 가지는 다릅니다. 엑셀 PDF 변환, ODS XLSX 변환, XLS XLSX 변환, XLSX ODS 변환은 파일을 저희 서버로 보냅니다. 인쇄 페이지를 배치하거나 글꼴, 색상, 조건부 서식, 차트를 다른 형식으로 옮기는 일은 웹 페이지가 흉내 낼 수 있는 일이 아니기 때문입니다. 이 파일들은 암호화된 연결로 전송되어 변환되고, 다운로드가 준비되는 즉시 삭제됩니다. 서버에 연결할 수 없으면 각 도구는 자체 변환기로 대신 처리합니다. 이때 값, 수식, 표시 형식, 병합된 셀, 열 너비는 유지되지만 글꼴, 색상, 차트는 유지되지 않으며, 그렇게 처리했다고 알려 드립니다.

용량. 브라우저에서 처리하는 도구는 표 전체를 메모리에 올리므로, 한계는 탭이 쓸 수 있는 메모리입니다. 수십 MB까지는 무난하고, 100 MB를 넘으면 버거우며, 수 GB짜리 추출 파일은 불가능합니다. 통합 문서 변환기는 파일당 50 MB, 엑셀 PDF 변환은 40 MB까지이며, 둘 다 변환한 뒤가 아니라 변환하기 전에 알려 드립니다. Excel 시트 자체는 1,048,576행에서 끝나는데, 이는 저희가 아니라 형식의 한계입니다. CSV 엑셀 변환은 데이터를 말없이 잘라 내지 않고, 머리글 행을 반복해 추가 시트로 이어서 씁니다.

본격적인 데이터 작업. 변환기는 데이터베이스가 아닙니다. 두 표 조인, 중복 제거, 집계, 1,000만 행 필터링, 지저분한 내보내기 파일 분석은 그런 일을 위해 만들어진 도구가 할 일이며, 무료 도구도 매우 훌륭합니다. 명령줄에서 CSV를 빠르게 손보려면 csvkit, JSON과 CSV를 함께 다루려면 Miller, 거대한 파일을 빠르게 처리하려면 qsv, CSV나 Parquet 파일에 바로 SQL을 실행하려면 DuckDB, 이미 Python을 쓰고 있다면 pandas가 있습니다.

매크로 등 실행되는 모든 것. VBA는 .xlsx로 옮길 수 없습니다. .xlsx에는 VBA를 담을 자리가 아예 없기 때문입니다. .ods로도 옮기지 않는데, LibreOffice는 VBA의 일부만 실행하므로 그 차이가 오류가 아니라 잘못된 숫자로 나타나기 때문입니다. 통합 문서가 매크로에 의존한다면 변환한 사본과 함께 원본도 보관하세요. 비밀번호로 보호된 파일은 비밀번호를 설정한 프로그램에서 먼저 비밀번호를 제거해야 합니다.

자동화. 이 도구들은 사람이 클릭할 때 실행됩니다. 매일 밤 들어오는 피드를 변환하는 일은 명령줄의 몫입니다. 헤드리스 모드의 LibreOffice가 이 페이지의 모든 형식을 처리합니다.

이름이 비슷한 도구 중 고르기

엑셀 CSV 변환과 엑셀 XML 변환. 둘 다 통합 문서를 읽어 평면 데이터 파일을 쓰며, 어디로 보낼지가 선택을 결정합니다. CSV는 스프레드시트, 데이터베이스, 그리고 “CSV를 업로드하세요”라고 하는 모든 곳으로 갑니다. XML은 요소 이름을 지정하는 가져오기와 연동 시스템으로 갑니다. 루트와 행 이름을 직접 정하고, 머리글은 요소 이름이 되며, 값은 꾸밈없는 숫자와 ISO 날짜로 나옵니다. 엑셀 XML 변환은 XML Spreadsheet 2003도 쓸 수 있는데, 이것은 완전히 다른 것입니다. Excel이 통합 문서로 다시 여는 형식으로, 시스템이 직접 만든 데이터 XML이 아니라 “Excel XML”을 요구할 때 씁니다.

CSV 엑셀 변환과 CSV JSON 변환. 같은 파서, 같은 열 단위 타입 판별, 다른 결과물입니다. CSV 엑셀 변환은 합계를 내고 정렬할 수 있는 진짜 날짜와 숫자, 고정되고 필터가 걸린 머리글 행을 갖춘 .xlsx를 만듭니다. 사람을 위한 것입니다. CSV JSON 변환은 객체 배열, 배열의 배열, 키가 있는 객체 또는 JSON Lines를 만듭니다. 코드를 위한 것입니다. 둘 다 필요하다면 사람에게는 엑셀로, 파이프라인에는 JSON으로 변환하세요. 열 타입을 같은 방식으로 정하므로 결과가 서로 일치합니다.

XML 엑셀 변환과 엑셀 XML 변환. 단순히 방향만 반대인 것이 아닙니다. XML 엑셀 변환은 먼저 표를 찾아야 합니다. 같은 부모 아래에서 반복되는 요소(카탈로그의 모든 <book>, RSS 피드의 모든 <item>)를 찾아 그룹마다 점수를 매기고, 나머지 후보는 클릭 한 번으로 고를 수 있게 한 뒤, 속성과 중첩 요소를 경로 이름을 딴 열로 펼칩니다. 엑셀 XML 변환은 찾을 것이 없습니다. 행이 이미 레코드이기 때문입니다.

XLS XLSX 변환과 CSV 엑셀 변환. 둘 다 최신 통합 문서로 끝납니다. XLS XLSX 변환은 진짜 Excel 97–2003 바이너리 파일을 업그레이드하며, 시트, 수식, 서식, 차트 등 그 안의 모든 것을 유지합니다. CSV 엑셀 변환은 그런 것이 처음부터 없던 일반 텍스트로 통합 문서를 만듭니다. 골치 아픈 건 그 중간입니다. 많은 웹 앱이 HTML 표나 XML 파일을 내보내면서 이름을 .xls로 붙입니다. XLS XLSX 변환은 이런 파일의 정체를 알아보고 진짜 통합 문서로 저장합니다.

PDF 엑셀 변환과 엑셀 PDF 변환. 방향이 반대이며, 믿을 만한 쪽은 하나뿐입니다. 엑셀 PDF 변환은 레이아웃 작업입니다. 통합 문서는 이미 인쇄 영역, 페이지 나누기, 서식을 알고 있고 변환기는 그대로 그리면 됩니다. PDF 엑셀 변환은 어려운 방향입니다. PDF는 각 글자가 어디에 그려졌는지만 기록하고 어느 셀에 속했는지는 전혀 기록하지 않으므로, 열을 위치로 추론해야 합니다. 괘선이 있는 깔끔한 표에서는 잘 작동하지만, 병합된 셀이나 여러 줄로 줄 바꿈된 셀은 손질이 필요하고, 서식이나 수식이 아니라 값을 재현하며, PDF 한 페이지마다 시트 하나를 만듭니다. 원본 통합 문서가 아직 있다면 그것을 요청하세요.

.ods 파일에 ODS XLSX 변환과 엑셀 CSV 변환 중 무엇을 쓸까. 엑셀 CSV 변환은 .ods도 문제없이 열어 값을 꺼내 줍니다. ODS XLSX 변환은 통합 문서를 수식, 서식, 차트와 함께 통합 문서 그대로 유지합니다. 누군가 그 파일로 작업해야 한다면 변환기를, 시스템이 숫자만 필요로 한다면 CSV를 쓰세요.

이 도구들의 기반 기술

실제 작업을 수행하는 오픈 소스 엔진과, 이들이 구현한 규격입니다.

  • SheetJSApache-2.0 — 이 사이트의 모든 통합 문서 형식 읽기·쓰기.
  • LibreOffice CalcMPL-2.0 — 사용 가능할 때 브라우저가 할 수 없는 변환 처리.
  • RFC 4180Specification — CSV에 그나마 가장 가까운 표준이며, 파일마다 형식이 다른 이유를 설명.

자주 묻는 질문

스프레드시트가 어딘가에 저장되나요?

엑셀 CSV 변환, CSV 엑셀 변환, CSV JSON 변환, JSON CSV 변환, XML 엑셀 변환, 엑셀 XML 변환, PDF 엑셀 변환은 그렇지 않습니다. 이 도구들은 이 탭 안에서 파일을 읽고 결과를 쓰며, 어디에도 보내지 않습니다. 엑셀 PDF 변환과 세 가지 통합 문서 변환기는 파일을 암호화된 연결로 저희 서버에 보냅니다. 페이지를 배치하거나 서식과 차트를 옮기려면 진짜 스프레드시트 프로그램이 필요하기 때문입니다. 파일은 변환 후 즉시 삭제되며, 아무것도 저장, 기록, 공유되지 않습니다.

CSV를 더블클릭만 했는데 Excel이 왜 망가뜨리나요?

Excel은 묻지도 않고 셀마다 따로 추측하기 때문입니다. 앞의 0이 사라지고, 긴 ID는 지수 표기가 되고, 날짜는 일-월과 월-일 순서가 뒤바뀌며, 세미콜론 파일은 한 열에 몰립니다. CSV 엑셀 변환은 열마다 그 열의 모든 값을 보고 한 번 결정하고, 다운로드 전에 모든 결정을 보여 드리므로 나중에 발견하는 대신 미리 바로잡을 수 있습니다.

악센트가 있어야 할 자리에 왜 이상한 문자가 나오나요?

CSV는 자신의 인코딩을 기록하지 않기 때문에, 파일이 바이트 순서 표시(BOM)로 시작하지 않으면 Excel은 컴퓨터의 예전 지역 코드 페이지로 읽습니다. 엑셀 CSV 변환에서 “UTF-8 BOM 포함”을 고르면 악센트, 키릴 문자, 아랍 문자, 중국어, 이모지가 모두 제대로 열립니다. BOM이 없는 일반 UTF-8은 BOM을 원하지 않는 데이터베이스와 코드에 맞는 선택입니다.

수식은 어떻게 되나요?

통합 문서끼리 변환하면 수식이 수식으로 옮겨져 계속 계산됩니다. 한쪽에만 있는 함수는 바꿔 줄 때까지 #NAME?으로 표시됩니다. CSV, JSON, XML로 내보낼 때는 계산 결과만 씁니다. 이 형식들에는 수식을 담을 곳이 없기 때문입니다. 반대 방향으로 가져올 때는 =로 시작하는 셀을 살아 있는 수식이 아니라 텍스트로 씁니다. 그래서 악의적인 CSV가 통합 문서를 열 때 무언가를 실행할 수 없습니다.

파일 용량이나 하루 사용량 제한이 있나요?

계정도, 할당량도, 하루 한도도 없습니다. 브라우저 도구는 기기의 메모리가 한계입니다. 통합 문서 변환기는 최대 50 MB, 엑셀 PDF 변환은 최대 40 MB 파일을 받으며, 파일이 더 크면 분명하게 알려 드립니다.

워터마크나 행 수 제한이 있나요?

없습니다. 여기서는 행 수를 제한하거나, 시트에 체험판 문구를 찍거나, 데이터를 잘라 내지 않습니다. 유일한 행 제한은 Excel 자체의 1,048,576행이며, 더 긴 파일은 잘리지 않고 추가 시트로 이어집니다. 페이지의 광고 덕분에 무료로 운영됩니다.