UTF8 인코딩을 사용하여 Excel로 CSV로 변환 [닫기]


607

가져 오기 파일로 사용하기 위해 CSV 파일로 변환해야하는 스페인어 문자 (물결표 등)가있는 Excel 파일이 있습니다. 그러나 CSV로 저장하면 ASCII 문자가 아닌 "특별한"스페인어 문자가 엉망이됩니다. 또한 Mac에서 Excel 파일을 만드는 원래 사용자로부터 오는 왼쪽 및 오른쪽 따옴표와 긴 대시 로이 작업을 수행하는 것 같습니다.

CSV는 텍스트 파일이기 때문에 UTF8 인코딩을 처리 할 수 ​​있다고 확신하므로 Excel 제한 사항이라고 생각하지만 Excel에서 CSV로 가져와 비 ASCII 문자를 유지하는 방법을 찾고 있습니다 손대지 않은.


15
게시하기 전에 그 질문을 보았지만 이미 UTF8 CSV가 있고 다른 방법으로 Excel에서 열지 않는 것입니다.
Jeff Treuting

7
아래의 답변은 효과가있는 것 같지만 해결 방법 일뿐입니다. 누구든지 Excel 에서이 작업을 수행하는 방법을 알고 있습니까?
NielW

2
나는 2 센트를 떨어 뜨리고 싶었다. 많은 시행 착오 후에 VBA 기능 등을 사용하려고 시도했다. "형식으로 인해이 문제가 해결되었습니다. 필자의 경우 Citrix webinar (GotoWebinar) CSV 데이터는 결국 끝에 Apex 코드를 깨뜨리는 문자로 끝납니다. "CSV (MSDOS)"로 저장하면 CSV 내보내기를 Notepad ++로로드하고 UTF- 8 빈 파일 및 다시 저장. :-P :-)
AMM

2
이것은 매우 성가신 Excel 제한입니다. : 나는 이것에 대해 uservoice 기능 요청 열 excel.uservoice.com/forums/...를 , 투표에 자유롭게 그것은 일어날 수 있도록
도론 Yaacoby을

7
Excel uservoice에 따르면, Microsoft는 지난 달 .csv 용 UTF-8 작업을 시작했습니다. excel.uservoice.com/forums/…
moloko

답변:


405

간단한 해결 방법은 Google 스프레드 시트를 사용하는 것입니다. 붙여 넣기 (복잡한 수식이있는 경우에만 값)하거나 시트를 가져온 다음 CSV를 다운로드하십시오. 방금 몇 문자를 시도했지만 다소 잘 작동합니다.

참고 : Google 스프레드 시트는 가져올 때 제한이 있습니다. 여기를 참조 하십시오 .

참고 : Google 스프레드 시트의 민감한 데이터에주의하십시오.

편집 : 또 다른 대안 -기본적으로 VB 매크로 또는 addin을 사용하여 UTF8로 저장하십시오. 나는 이러한 해결책을 시도하지 않았지만 합리적으로 들립니다.


63
아마도 Joel Slotsky (이전의 Excel PM)는 10 년 전의 모든 게시물을 절대적으로 모든 소프트웨어 개발자에게 절대적으로, 유니 코드와 문자 집합에 대해 반드시 알아야 한다고 보낼 수 있을까요?
Indolering

8
일반 Windows 메모장 (다른 이름으로 저장을 사용하고 인코딩 옵션에서 utf-8을 선택)을 사용하면 나에게 도움이되었습니다. 본인에게는 머신에 대한 관리자 권한이없는 사용자가 수행해야하므로이 방법이 최선의 방법이므로 추가 소프트웨어를 설치할 필요가 없습니다.
Fer

9
번거롭지 않은 OpenOffice JustWorks (tm) – 포함되어야한다고 생각합니다
Rbjz

9
어. 나는 단지 내 등을 떨었다. Excel 파일에 200,000 줄이 있으면 어떻게됩니까? 또는 엑셀 스프레드에 포함하고 싶지 않은 민감한 데이터가 포함되어 있습니까? 필요한 경우 Openoffice / Libreoffice를 사용하십시오.
Seb

2
파일 크기가 크면 어떻게 되나요? Goolge 시트는 올바르게 기억하면 크기가 75M 정도로 제한됩니다. 파일이 700M입니다
News_is_Selection_Bias

133

OpenOffice를 찾았습니다 의 스프레드 시트 응용 프로그램 인 Calc가 실제로 CSV 데이터를 처리하는 데 능숙 .

"다른 이름으로 저장 ..."대화 상자에서 "서식 옵션"을 클릭하여 CSV에 대한 다른 인코딩을 가져 오십시오. LibreOffice 는 AFAIK와 같은 방식으로 작동합니다.

계산 저장 대화 상자


나는 이것이 작동한다고 확신합니다. OpenOffice가 이미 없기 때문에 상황에 따라 Google 문서가 더 쉬워졌습니다. 제안에 감사드립니다
Jeff Treuting

19
OpenOffice Calc에는 "CSV"파일 (필드 구분 기호, 인코딩 등)을 열고 저장할 때 Google 문서와 Excel보다 더 많은 옵션이 있습니다. 또한 Google 문서는 현재 스프레드 시트 당 40 만 셀로 제한되어 있으며 OpenOffice Calc에서는 그렇지 않습니다.
Christian Davén

3
LibreOffice도 작동하는지 확인할 수 있습니다. Excel에서 슬프게 부족한 내보내기시 문자 인코딩 옵션을 제공합니다.
Rupert Rawnsley

1
민감한 데이터로 작업하는 사람들에게 훌륭한 옵션입니다. OpenOffice 제품군은 시스템이 잠겨있는 사용자를위한 휴대용 설치 일 수 있습니다.
Nathan

119
  1. Excel 시트를 "유니 코드 텍스트 (.txt)"로 저장하십시오. 다국어 문자는 모두 UTF16 (UTF8이 아님)입니다. 그러나 새 "* .txt"파일은 탭으로 구분되고 쉼표로 구분되지 않으므로 실제 CSV가 아닙니다.

  2. (선택 사항) 가져 오기 위해 TAB 구분 파일을 사용할 수없는 경우 자주 사용하는 텍스트 편집기를 사용하고 TAB 문자를 쉼표 ","로 바꾸십시오.

  3. 대상 응용 프로그램에서 * .txt 파일을 가져옵니다. UTF16 형식을 허용 할 수 있는지 확인하십시오.

BMP 이외의 코드 포인트를 지원하여 UTF-16이 올바르게 구현 된 경우 정보 손실없이 UTF-16 파일을 UTF-8로 변환 할 수 있습니다. 나는 그것을 좋아하는 방법을 찾기 위해 당신에게 맡깁니다.

이 절차를 사용하여 Excel에서 Moodle로 데이터를 가져옵니다.


5
마침내 효과가 있었던 것! Excel 2013에서 위의 Excel 옵션을 사용해 보았습니다. 파싱 ​​할 때 \ t를 분할 문자로 사용하기로 전환했으며 완벽하게 작동했습니다!
Mattias Lindberg

1
MySQL에서 가져 오기 위해 XLS를 CSV로 내 보내야했습니다. Excel 2003을 사용하여 "유니 코드 텍스트 (.txt)"형식으로 내 보낸 다음 메모장 ++을 사용하여 TAB을로 바꾸고 ;txt 파일을 기본 "파일의 문자 세트 : utf-8", 형식 "CSV로 phpmyadmin으로 가져 왔습니다. LOAD DATA 사용 ". 모든 인코딩이 올바르게 전송되었습니다.
Kai Noack

3
감사합니다. 이것은 말이됩니다. MS가 여전히 표준으로 UTF 사용을 거부하는 이유는 저를 능가합니다.
Oskar Limka

4
@OskarLimka : "UTF"라고 말하면 UTF-8 또는 UTF-16을 의미합니까? Microsoft는 UTF-16을 꽤 많이 사용하기 때문입니다.
Flimm

7
"좋은 소식은 모든 국제 문자가 UTF16 (UTF8이 아니라 노트)이라는 점입니다." : 난센스 완료 . UTF-8 및 UTF-16은 전체 유니 코드 코드 포인트 세트를 인코딩하는 두 가지 방법입니다.

43

나는 이것이 오래된 질문이라는 것을 알고 있지만 OP와 같은 문제로 어려움을 겪고있는 동안이 질문에 직면했습니다.

제공된 솔루션 중 실행 가능한 옵션을 찾지 못했지만 Excel을 사용 하여이 작업을 수행 할 수있는 방법이 있는지 알아 냈습니다.

다행히도 xlsx 형식에서 csv 형식으로 저장할 때 잃어버린 문자 문제 만 발생합니다 (제 경우). xlsx 파일을 먼저 xls에 저장 한 다음 csv에 저장해 보았습니다. 실제로 효과가있었습니다.

시도해보고 그것이 효과가 있는지 확인하십시오. 행운을 빕니다.


3
저에게 Mac 2011 용 Excel에서는이 기능이 작동하지만을 선택한 경우에만 작동합니다 Windows comma separated (CSV). 기본 또는 DOS CSV 옵션을 사용하면 작동하지 않습니다. 둘 다 악센트 부호 문자를 임의 정크 문자로 바꿉니다. 를 포함한 문자 테스트 é, è, â진짜 UTF8이야하지만 문자가 엉망이되지 않는 경우 ... 알고하지 마십시오.
user56reinstatemonica8

12
빠른 확인-(Excel for Mac 2011)에서이 방법으로 생성 된 파일은 UTF-8 csvs, BUT을 생성 하지 않습니다 . 최소한 올바른 문자를 포함하는 CSV를 생성하므로 텍스트 편집기에서 고통없이 UTF8로 변환 할 수 있습니다 Excel에서 기본적으로 튀어 나온 우스꽝스러운 정크에서 큰 발전입니다.
user56reinstatemonica8

그렇습니다. 이것은 저에게도 효과적이었습니다 (Excel Mac 2011).
cbmanica

1
이것은 Excel 2007을 사용하여 나에게 효과적이지 않았습니다. 내 파일에 ASCII가 아닌 문자가 2 개 있었고 그중 하나는이 방법으로 정상적으로 저장되었지만 다른 하나는 그렇지 않았습니다.
EM0

1
결과 CSV 파일은 질문에 따라 UTF-8이 아닌 UTF-16으로 표시됩니다.
Flimm

38

Unix에서 iconv 명령을 사용할 수 있습니다 (Windows에서도 libiconv 로 사용 가능) ).

명령 줄의 Excel에서 CSV로 저장 한 후 다음을 입력하십시오.

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(cp1250을 인코딩으로 교체해야합니다).

GoogleDocs (400.000 셀 제한)로 가져올 수없는 우편 번호 데이터베이스와 같은 큰 파일에 대해 빠르고 훌륭하게 작동합니다.


5
내용에 1250으로 인코딩 할 수없는 문자가 포함되어 있으면 더 이상 쓸모없는 방법은 Excel에서 "Unicode .txt"로 내보내고 iconv를 사용하여 Utf16에서 변환하는 것입니다. 어쩌면 또한 작업을 수행 sed하거나 tr',' '\ t'까지 번역
세바스찬

5
Excel의 기본 인코딩은 CSV 또는 MS-DOS CSV로 저장할 때 CP858, Windows CSV로 저장할 때는 Windows 1252로 나타납니다 (Mac 2011 용 Excel에서 테스트).
claymation

4
Excel이 .csv 형식으로 저장할 때 코드 당 1 바이트 인코딩으로 인코딩 할 수없는 유니 코드 코드 포인트와 관련하여 정보가 손실되는 것처럼 이것은 쓸모가 없다는 것에 완전히 동의합니다.
Flimm

26

타사 소프트웨어없이 최신 Windows 시스템에서이 작업을 수행 할 수 있습니다. 이 방법은 신뢰할 수 있으며 인용 된 쉼표, 인용 된 탭 문자, CJK 문자 등을 포함하는 데이터를 처리합니다.

1. Excel에서 저장

Excel file.txt에서 유형 을 사용하여 데이터를 저장하십시오 Unicode Text (*.txt).

2. PowerShell 시작

powershell시작 메뉴에서 실행하십시오 .

3. PowerShell에서 파일로드

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. 데이터를 CSV로 저장

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

2
이 방법은 15,000 개가 넘는 레코드를 가진 CSV 파일에서 완벽하게 작동했으며 메모장에서 1024자를 초과했습니다. 몇 초가 걸리며 타사 소프트웨어를 사용하지 않습니다. 감사!
절대

아, Google 스프레드 시트를 사용해도 같은 문제가 발생했습니다. 아마도이 PowerShell 전략이 효과가 있었을 것입니다. 여기 내 문제가 있었다. 특정 이모티콘과 같은 특정 문자의 경우 CHARACTER SET utf8mb4여기에 설명 된대로 사용해야 합니다. stackoverflow.com/a/10959780/470749
Ryan

1
@Ryan이 문제는 MySQL에만 해당됩니다. 방금 해당 질문에서 문제가있는 문자를 시도했지만 Excel과 PowerShell에서 모두 잘 작동했습니다.
Don Cruickshank

24

이를 수행하는 유일한 "쉬운 방법"은 다음과 같습니다. 먼저, 표시되는 것과 Excel .csv 파일에 숨겨져있는 것 사이에 차이가 있음을 인식하십시오.

  1. 정보가있는 Excel 파일을 엽니 다 (.xls, .xlsx)
  2. Excel에서 파일 유형으로 "CSV (쉼표로 구분) (*. csv)"를 선택하고 해당 유형으로 저장하십시오.
  3. NOTEPAD ( "프로그램"및 시작 메뉴의 보조 프로그램 아래에 있음)에서 저장된 .csv 파일을 메모장에서 엽니 다.
  4. 그런 다음-> 다른 이름으로 저장 ...을 선택하고 "다른 이름으로 저장"상자의 맨 아래에 "인코딩"이라고 표시된 선택 상자가 있습니다. UTF-8을 선택하십시오 (ANSI를 사용하지 않거나 모든 악센트 등을 잃게됩니다). UTF-8을 선택한 후 파일을 원본과 약간 다른 파일 이름으로 저장하십시오.

이 파일은 UTF-8이며 모든 문자와 악센트를 유지하며 예를 들어 MySQL 및 기타 데이터베이스 프로그램으로 가져올 수 있습니다.

이 답변은 이 포럼 에서 가져 왔습니다 .


9
CSV로 저장하는 2 단계로 인해 올바르지 않습니다. 문제는 Excel에서 CSV 파일을 cp1252 (코드 당 1 바이트 인코딩)로 저장한다는 것입니다. 이로 인해 1 바이트에 맞지 않는 문자에 대한 정보가 손실됩니다.
Flimm

그것은 나를 위해 일했지만 왜 그런지 이해할 수 없습니다. 자바 스크립트로 생성 된 내 파일은 항상 다른 인코딩으로 Excel에서 잘못 읽습니다. 그러나 메모장에서 열고 utf-8로 저장하면 정상적으로 작동합니다! 따라서 인코딩에 메타 데이터가있는 것 같습니다. 어떻게 작동합니까? 메모장에서 UTF-8 CSV 파일을 저장할 수 있고 Excel에서 읽을 수 있다면 내 프로그램에서 올바른 UTF-8 CSV 파일을 생성하여 Excel에서 읽을 수 있습니까?
felipeaf

나를 위해 일했다. Access에서 변환 된 XSLX에서. 분음 부호 및 LF 전용 및 ISO 날짜 형식은 모두 정상입니다. 더 인기있는 솔루션으로는 하나 또는 다른 것이 작동하지 않았습니다.
RolfBly

21

내가 찾은 또 다른 하나 : " 숫자 "는 CSV로 저장할 때 인코딩 설정을 허용합니다.


8
^ 그것은 맥 OSX에있는 응용 프로그램입니다
Sruit A.Suk

또한 행 수에 제한이 있으므로 Numbers에주의를 기울여야하며 일부 데이터가 잘린 것을 깨닫지 않기 전에 이와 같은 데이터를 변환했습니다. Excel / CSV에는 훨씬 더 높은 한계가 있습니다.
MrE

14

Google 문서에는 "nevets1219"가 적합하지만 파일을 "가져 오기"하면 UTF-8로 변환되지 않는 경우가 많습니다.

그러나 CSV를 기존 Google 스프레드 시트로 가져 오면 UTF-8로 변환됩니다.

레시피는 다음과 같습니다.

  • 기본 문서 (또는 드라이브) 화면에서 "만들기"버튼을 클릭하고 "스프레드 시트"를 선택하십시오.
  • "파일"메뉴에서 "가져 오기"를 선택하십시오.
  • "파일 선택"을 클릭하십시오
  • "스프레드 시트 교체"를 선택하십시오.
  • 구분자로 사용하는 문자를 선택하십시오
  • "가져 오기"를 클릭하십시오
  • "파일"메뉴에서 "다른 이름으로 다운로드"-> CSV (현재 시트)를 선택하십시오.

결과 파일은 UTF-8입니다.


2
이 답변의 문제점은 처음에 CSV 파일을 생성 한 방법입니다. Excel에서 CSV로 저장을 단순화하여 그렇게 한 경우 CSV 파일은 코드 당 1 바이트 인코딩 인 cp1252에 있습니다. 이것은 1 바이트에 맞지 않는 문자에 관한 정보를 잃게됩니다.
Flimm

글쎄, 그것은이 답변 중 하나에 문제가 있습니다. 그리고 원래 인코딩이 무엇인지 알거나 제어 할 수있는 방법이 없기 때문에 UTF-8로 변환하는 방법에 대한 답변이있을 것입니다.
RedYeti


13

메모장 사용하기 ++

이렇게하면 Excel에서 저장 한 손상된 CSV 파일이 수정되고 올바른 인코딩으로 다시 저장됩니다.

  • Excel에서 CSV 내보내기
  • 메모장에로드 ++
  • 인코딩 수정
  • 저장

Excel은 CP-1252 / Windows-1252에 저장됩니다. 메모장에서 CSV 파일을 엽니 다 ++. 고르다

Encoding > Character Sets > Western European > Windows-1252

그때

Encoding > Convert to UTF-8
File > Save

먼저 메모장 ++에 인코딩을 말한 다음 변환하십시오. 이러한 다른 답변 중 일부는 올바른 인코딩을 먼저 설정하지 않고 변환하여 파일을 더 많이 처리합니다. 그들은해야한다 무엇 될지는 으로 . 캐릭터가 CP-1252에 맞지 않으면 CSV로 저장했을 때 이미 손실되었습니다. 다른 대답을 사용하십시오.


이 오류가 발생할 수 있지만 메모장 ++에서 파일을 ".csv"로 저장할 수 없으며 이것이 관련 내용입니다.
Daniel Maurer

1
그래 넌 할수있어. 텍스트 파일 만 저장 .csv하고 텍스트 파일입니다. 이 답변은 Excel에 의해 손상된 CSV 파일을 열고 수정 한 다음 적절한 인코딩으로 다시 저장합니다.
Chloe

당신이 의사 소통하는 것은 결과에 도달했습니다. 이 탁월한 방법을 사용하면 더 높은 데이터 품질을 얻을 수 있습니다! 브라보! (퀴즈 :이 설명이 왜 그렇게 퀴즈
적인가

9

Excel 2016 이상 (Office 365 포함)에는 UTF-8 형식 전용 CSV 옵션이 있습니다.

Office 365에서 다른 이름으로 저장을 수행합니다. 이전에 CSV (쉼표로 구분)를 선택한 경우 이제 CSV UTF-8 (쉼표로 구분) (*. csv) 로 저장할 수있는 파일 형식 중 하나


1
해당 옵션을 사용하는 방법에 대한 지침을 제공해야합니다.
rovyko

1
@dexgecko 반드시 : "저장"버튼 / 메뉴라고합니다. Windows의 Excel 2016에는 이제 네 가지 CSV 내보내기 유형이 있습니다. CSV 는 "ANSI"로 저장됩니다 (대부분의 Latin1이지만 서양 이외의 OS 설치와 다를 수 있습니다). UTF-8 CSV BOM을 사용하여 UTF-8로 저장하고 CSV (DOS)는 CP850 (다시 말해서 설치에 따라 다름?)으로 저장하고 CSV (Mac)는 MacRoman으로 저장합니다.

그러나 Excel은 UTF-8 및 ANSI CSV 파일 만 읽을 수 있습니다 (Excel은 BOM을 사용하여 선택할 수 있음). 다른 인코딩에서 가져 오려면 .txt로 이름을 바꾸고 Excel에서 연 다음 (선택할 긴 인코딩 목록이 있음) 구분 기호를 올바르게 해석하지 않으므로 "변환"단추를 사용하여 행을 분할하십시오. 다른 언어 규칙에서 CSV를 가져올 때이 트릭을 사용할 수도 있습니다 (예를 들어 프랑스어에서는 쉼표가 이미 10 진 구분 기호로 사용되므로 파일 구분 기호는 세미콜론입니다).

1
@ Jean-ClaudeArbaut 이상한, Excel 2016에 UTF-8 CSV 옵션이 표시되지 않습니다.
rovyko

1
@dexgecko 이상합니다. 이 페이지 에 따르면 (프랑스어, 죄송합니다), 기능은 2016 년 11 월 빌드 버전 1610에 추가되었습니다. 현재 1802 버전을 사용하고 있습니다. 그러나 Office 365만이 그런 종류의 진화를 가지고 있다고 생각했으며 Office Pro 2016 (365 맛이 아님)을 사용하고 있습니다. 아마도 Office를 업데이트하십시오.

8

완전히 프로그래밍 방식 (또는 최소한 서버 측) 솔루션을 찾고있는 사람들에게는 catdoc의 xls2csv 도구를 사용하여 큰 성공을 거두었습니다.

catdoc 설치 :

apt-get install catdoc

변환을 수행하십시오.

xls2csv -d utf-8 file.xls > file-utf-8.csv 

이것은 타 오르고 있습니다.

-d utf-8플래그 를 포함하는 것이 중요합니다 . 그렇지 않으면 출력이 기본 cp1252인코딩 으로 인코딩되고 정보가 손실 될 위험이 있습니다.

참고 xls2csv또한에만 작동 .xls파일, 그것은 함께 일을하지 않는 .xlsx파일입니다.


또는 다른 출력 인코딩을 선택하고 단일 답변으로 모든 사람의 문제를 해결할 수는 없습니다 :-)
mpowered

2
유감 스럽지만이 답변으로 인해 일부 사용자에게 문제 발생할 수 있습니다. cp1252에 맞는 문자로만 이것을 실행했다는 사실은 운이 좋으며, 대답 에서이 위험에 대해 경고하지 않았습니다. 많은 사람들이 공유하는 OP 문제만으로 모든 사람의 문제를 해결하라는 요청을받지 않았습니다.
Flimm

1
거기서 답글의 문제를 수정하고 공감대를 제거했습니다.
Flimm

7

Powershell 사용은 어떻습니까?

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8

1
ASCII 이외의 스페인어 문자는 원래 스페인어 문자에서 ANSI가 사용하는 인코딩 문자열로 변경됩니다. 따라서 텍스트는 원본과 동일하지 않습니다.
Jason Williams

7

가장 쉬운 방법 : 필요 없음 오픈 오피스 및 Google 문서

  1. 파일을 "유니 코드 텍스트 파일"로 저장하십시오.
  2. 이제 유니 코드 텍스트 파일이 있습니다.
  3. "notepad"로 열고 "utf-8"또는 원하는 다른 코드 페이지를 선택하여 "다른 이름으로 저장"
  4. 파일 확장자를 "txt"에서 "csv"로 바꿉니다. 탭으로 구분 된 UTF-8 csv 파일이 생성됩니다.
  5. 쉼표로 구분 된 파일 을 원할 경우 csv방금 이름을 바꾼 파일을 열고 모든 탭을 쉼표 바꿉니다 . Win 10 메모장에서이 작업을 수행하려면 탭 필드 하나를 선택한 다음을 클릭하십시오 Ctrl+H. 열리는 창 ,에서 "바꾸기"필드에 쉼표 를 입력 한 다음 "모두 바꾸기"를 클릭하십시오. 파일을 저장하십시오. 결과는 쉼표로 구분 된 UTF-8 csv 파일입니다.

어쨌든 MS-Office로 열지 마십시오 !!! 이제 탭으로 구분 된 CSV 파일이 있습니다. 또는 단계 번호 5를 적용한 경우 쉼표로 구분 된 것입니다.


2
탭으로 구분 된 파일의 경우 .txt확장자 를 사용하는 것이 좋습니다 . csv즉, 쉼표로 구분 된 파일은 혼란 스럽습니다.
dof1985

5

웃기는 것처럼 180MB 스프레드 시트를 UTF8 CSV 파일로 저장하는 가장 쉬운 방법은 셀을 Excel로 선택하고 복사 한 다음 클립 보드의 내용을 SublimeText에 붙여 넣는 것입니다.


1
이것은 Excel 이 클립 보드를 통해 선택 의 TSV 버전을 제공하기 때문에 작동합니다 . SublimeText 대신 메모장을 똑같이 사용할 수는 있지만 UTF-8 인코딩으로 저장하는 것이 좋습니다.
Don Cruickshank


3

Windows 환경을 가정하면 Excel에서 평소와 같이 파일을 저장하고 작업 한 다음 저장된 Excel 파일을 Gnome Gnumeric (무료)로 엽니 다. Gnome Gnumeric의 스프레드 시트를 CSV로 저장하십시오. 어쨌든 UTF-8 CSV로 저장합니다.


3

쉬운 방법 : 열린 사무실 ( 여기 )을 다운로드 하고 스프레드 시트를로드 한 다음 Excel 파일 ( .xls또는 .xlsx)을 엽니 다 . 그런 다음 텍스트 CSV 파일로 저장하면 현재 형식을 유지하거나 .ODF 형식으로 저장할 것인지 묻는 창이 열립니다. "현재 형식 유지"를 선택하고 새 창에서 파일이 작성된 언어에 따라 더 적합한 옵션을 선택하십시오. 스페인어의 경우 서유럽 ( Windows-1252/ WinLatin 1)을 선택 하면 파일이 제대로 작동합니다. 유니 코드 ( UTF-8) 를 선택 하면 스페인어 문자와 작동하지 않습니다.


3
UTF-8이 스페인어 문자와 작동하지 않는 이유는 없습니다.
Flimm

3
  1. xls 파일 (Excel 파일)을 유니 코드 텍스트로 저장 => 파일은 텍스트 형식 (.txt)으로 저장됩니다

  2. 형식을 .txt에서 .csv로 변경 (파일 이름을 XYX.txt에서 XYX.csv로 바꿉니다.


3
지침에 파일 데이터에서 탭을 쉼표로 변환하는 데 필요한 단계가 포함되어 있지 않으므로 작동하지 않습니다.
Matthew Rodatus

1
Excel의 "유니 코드 텍스트"는 질문에서 요구 한 UTF-8이 아닌 UTF-16입니다.
Flimm

3

나는 또한 같은 문제를 겪었지만 이것에 대한 쉬운 해결책이 있습니다.

  1. Excel 2016 이상에서 xlsx 파일을여십시오.
  2. "다른 이름으로 저장"에서이 옵션을 선택하십시오 : "(CSV UTF-8 (쉼표로 구분) *. csv)"

완벽하게 작동하며 모든 소프트웨어에서 가져올 수있는 csv 파일이 생성됩니다. 이 csv 파일을 SQLITE 데이터베이스로 가져 왔으며 모든 유니 코드 문자가 그대로 유지됩니다.


이 옵션은 Excel 2016에서 사용할 수 없습니다. Office 365 버전을 사용하고 있습니까?
Don Cruickshank

2

같은 문제가 발생 하여이 게시물을 봤습니다. 위의 어느 것도 나를 위해 일하지 않았습니다. 마지막으로 유니 코드 .xls를 .xml로 변환하고 (다른 이름으로 저장 ... XML 스프레드 시트 2003 선택) 올바른 문자를 생성했습니다. 그런 다음 XML을 구문 분석하고 사용하기 위해 콘텐츠를 추출하는 코드를 작성했습니다.


2

UTF-8로 워크 시트를 내보낼 수있는 작은 Python 스크립트를 작성했습니다.

Excel 파일을 첫 번째 매개 변수로 제공 한 다음 내보낼 시트를 제공하면됩니다. 시트를 제공하지 않으면 스크립트는 Excel 파일에있는 모든 워크 시트를 내 보냅니다.

#!/usr/bin/env python

# export data sheets from xlsx to csv

from openpyxl import load_workbook
import csv
from os import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def get_all_sheets(excel_file):
    sheets = []
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    all_worksheets = workbook.get_sheet_names()
    for worksheet_name in all_worksheets:
        sheets.append(worksheet_name)
    return sheets

def csv_from_excel(excel_file, sheets):
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    for worksheet_name in sheets:
        print("Export " + worksheet_name + " ...")

        try:
            worksheet = workbook.get_sheet_by_name(worksheet_name)
        except KeyError:
            print("Could not find " + worksheet_name)
            sys.exit(1)

        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
        for row in worksheet.iter_rows():
            lrow = []
            for cell in row:
                lrow.append(cell.value)
            wr.writerow(lrow)
        print(" ... done")
    your_csv_file.close()

if not 2 <= len(sys.argv) <= 3:
    print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
    sys.exit(1)
else:
    sheets = []
    if len(sys.argv) == 3:
        sheets = list(sys.argv[2].split(','))
    else:
        sheets = get_all_sheets(sys.argv[1])
    assert(sheets != None and len(sheets) > 0)
    csv_from_excel(sys.argv[1], sheets)

구현을 약간 업데이트하고 요지 gist.github.com/julianthome/2d8546e7bed869079ab0f409ae0faa87
Julian

2

Excel은 일반적으로 CSV 파일을 utf8 대신 ANSI 인코딩으로 저장합니다.

파일을 수정하는 한 가지 옵션은 메모장 또는 메모장 ++을 사용하는 것입니다.

  1. 메모장 또는 메모장 ++로 .csv를 엽니 다.
  2. 내용을 컴퓨터 클립 보드에 복사하십시오.
  3. 파일에서 내용을 삭제하십시오.
  4. 파일 인코딩을 utf8로 변경하십시오.
  5. 클립 보드에서 내용을 다시 붙여 넣습니다.
  6. 파일을 저장하십시오.

이전 버전의 NP ++에 대해서는 확실하지 않지만 현재 버전에서는 인코딩> UTF-8로 변환을 선택할 수 있습니다. 2-5 단계를 대체 함
Felk

1

"nevets1219"의 두 번째 옵션은 CSV 파일을 메모장 ++에서 열고 ANSI로 변환하는 것입니다.

상단 메뉴에서 선택 : Encoding-> Ansi로 변환


왜 다운 보트를 받았는지 모르겠습니다. 메모장 ++이 나를 위해했습니다. 기밀 파일이므로 Google 스프레드 시트에 파일을 저장할 수 없습니다.
Zane

3
이 답변의 문제점은 처음에 CSV 파일을 생성하는 방법입니다. Excel에서 단순히 CSV로 저장하면 인코딩은 코드 당 1 바이트 인코딩 인 cp1252가되므로 해당 문자에 맞지 않는 문자에 대한 정보가 손실됩니다. 또한 마지막에 질문에 대한 작업을 수행하려면 Ansi가 아닌 UTF-8로 변환해야합니다.
Flimm

이것은 훨씬 쉬운 답변 IMO입니다. Excel 2016을 사용하고 있으며 기본적으로 ANSI 인코딩으로 저장되지만 UTF-8로 가져 왔습니다.
rovyko

1

인코딩-> Ansi로 변환은 ANSI / UNICODE로 인코딩합니다. Utf8은 유니 코드의 하위 집합입니다. 아마도 ANSI로 올바르게 인코딩 될 것이지만, 여기서는 UTF8, @SequenceDigitale에 대해 이야기하고 있습니다.

csv (쉼표로 구분)로 내 보낸 다음 메모장 ++ (free)로 csv를 연 다음 인코딩> UTF8로 변환과 같은 더 빠른 방법이 있습니다. 그러나 파일 당 한 번만이 작업을 수행해야합니다. 자주 변경하고 내 보내야하는 경우 LibreOffice 또는 GDocs 솔루션이 가장 좋습니다.


5
"Utf8은 유니 코드의 하위 집합입니다": 이것은 의미가 없습니다. UTF-8은 유니 코드 인코딩 입니다.
jameshfisher

이 "인코딩-> Ansi로 변환"옵션을 찾을 수 있는지 잘 모르겠습니다.
Flimm

메모장 ++에서 ANSI csv를 사용하고 파일 인코딩을 utf8로 변경하면 ASCII가 아닌 원래 스페인어 문자가 원본 텍스트와 일치하지 않는 인코딩 문자열로 변환됩니다.
Jason Williams

1

Microsoft Excel에는 유니 코드 인코딩을 사용하여 스프레드 시트를 내보내는 옵션이 있습니다. 다음 스크린 샷을 참조하십시오.

여기에 이미지 설명을 입력하십시오


14
"유니 코드 텍스트"는 OP의 요청에 따라 UTF-8이 아닌 UTF-16 LE (Little Endian)로 저장됩니다.
도끼.

예. 그러나 Excel에서 x로 구분 된 값에 대한 유니 코드 지원을 얻는 가장 좋은 방법입니다. Excel에서 UTF-8을 사용하여 볼 수 있도록 모든 종류의 문제가 발생했습니다! 더 읽기
mcNux

1

notepad ++로 .csv를 열 수 있습니다. 인코딩이 양호하다고 생각되면 (모든 문자가 그대로 표시됨) 인코딩을 누른 다음 ANSI로 변환하십시오-현재 인코딩이 무엇인지 확인하십시오


그것은 나를 위해 일했다. csv로 mysql db를 내보내고 그것을 엑셀로 가져올 때 그리스 문자에 문제가 있었다.
nikolas

1
이 문제는 처음에 CSV 파일을 생성하는 방법입니다. Excel에서 CSV 파일로 저장하면 코드 당 1 바이트 인코딩 인 cp1252에 저장되므로 정보가 손실됩니다.
Flimm

1

다른 해결책은 winword로 파일을 열고 txt로 저장 한 다음 Excel로 다시 열면 ISA가 작동합니다.


1

저장 대화 상자> 도구 버튼> 웹 옵션> 인코딩 탭


이것은 나를 위해 작동하지 않습니다. 내가 이해하는 방식은 웹 형식 (HTML 등)으로 저장할 때만 적용되며 CSV로 저장할 때는 적용되지 않습니다.
jogojapan

나를 위해 일-사무실 2007
Elia Weiss 5

CSV 프로필을 선택하는 Office 2010에서는 작동하지 않습니다.
하트

0

저도 같은 문제를 가지고 건너 에 추가하고, 그것은에 대한 언급이다 엑셀 2007 년과 2010 년 옆에 엑셀 2013 년에 완벽하게 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.