source

UTF8 인코딩을 사용한 Excel to CSV

nicesource 2023. 2. 6. 23:58
반응형

UTF8 인코딩을 사용한 Excel to CSV

Import 파일로 사용하기 위해 CSV 파일로 변환해야 하는 스페인어 문자(틸드 등)가 포함된 Excel 파일이 있습니다.다만, 「Save As CSV」를 실행하면, ASCII 문자가 아닌 「특수」스페인어가 망가집니다.또한 Mac에서 Excel 파일을 만든 원래 사용자로부터 온 것처럼 보이는 왼쪽 및 오른쪽 따옴표와 긴 대시로 이를 수행하는 것으로 보입니다.

CSV는 텍스트 파일이기 때문에 UTF8 인코딩을 처리할 수 있다고 생각하기 때문에 Excel의 제한이라고 생각합니다만, Excel에서 CSV로 이동하여 비ASC를 유지할 수 있는 방법을 찾고 있습니다.II 문자는 온전합니다.

간단한 해결 방법은 Google 스프레드시트를 사용하는 것입니다.붙여넣기(복잡한 수식이 있는 경우에만 값) 또는 시트를 가져온 후 CSV를 다운로드합니다.나는 단지 몇 개의 캐릭터를 시도했을 뿐인데, 그것은 꽤 잘 작동한다.

참고: Google 시트는 가져올 때 제한이 있습니다.여기 보세요.

메모: Google 시트의 기밀 데이터에 주의하십시오.

EDIT: 또 다른 방법 - 기본적으로 VB 매크로 또는 애드인을 사용하여 UTF8로 저장을 강제합니다.나는 이 해결책들 중 어떤 것도 시도해보지 않았지만 그것들은 합리적인 것 같다.

OpenOffice의 스프레드시트 어플리케이션인 Calc는 CSV 데이터 처리에 매우 능숙하다는 을 알게 되었습니다.

"다른 이름으로 저장..." 대화상자에서 "포맷 옵션"을 클릭하여 CSV에 대해 다른 인코딩을 가져옵니다.Libre Office는 AFIK와 같은 방식으로 작동합니다.

계산 저장 대화 상자

  1. Excel 시트를 "유니코드 텍스트(.txt)"로 저장합니다.좋은 소식은 모든 국제 캐릭터가 UTF16(주: UTF8이 아님)에 있다는 것입니다.그러나 새로운 ".txt" 파일은 쉼표로 구분되지 않고 TAB로 구분되므로 진정한 CSV가 아닙니다.

  2. (선택사항) TAB 구분 파일을 Import에 사용할 수 없는 경우 즐겨찾는 텍스트에디터를 사용하여 TAB 문자를 콤마 "," 로 바꿉니다.

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

비BMP 코드 포인트를 지원하여 UTF-16이 올바르게 구현되어 있는 경우 정보를 잃지 않고 UTF-16 파일을 UTF-8로 변환할 수 있습니다.당신이 가장 좋아하는 방법을 찾는 것은 당신에게 맡기겠습니다.

엑셀에서 Moodle로 데이터를 Import할 때 사용합니다.

오래된 질문인 것은 알지만, OP와 같은 문제로 고민하다가 우연히 이 질문을 하게 되었습니다.

제공되는 솔루션 중 실행 가능한 옵션을 찾지 못했기 때문에 Excel만으로 이를 수행할 수 있는 방법이 있는지 알아보기로 했습니다.

다행히 xlsx 포맷에서 csv 포맷으로 저장할 때만 (내 경우) 문자 손실 문제가 발생한다는 것을 알게 되었습니다.먼저 xlsx 파일을 xls에 저장한 후 csv에 저장해 보았습니다.실제로 효과가 있었다.

잘 되는지 한번 시험해 보세요.행운을 빌어요.

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

명령줄에서 Excel 아래에 CSV로 저장한 후 다음 작업을 수행합니다.

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

(cp1250을 부호화로 치환해 주세요).

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

서드파티 소프트웨어를 사용하지 않고 최신 Windows 머신에서 이 작업을 수행할 수 있습니다.이 방법은 신뢰할 수 있으며 따옴표, 따옴표 탭 문자, CJK 문자 등을 포함하는 데이터를 처리합니다.

1. Excel에서 저장

를 Excel에 합니다.file.txtUnicode 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

이를 위한 유일한 "간단한 방법"은 다음과 같습니다.먼저 표시되는 내용과 Excel .csv 파일에 숨겨져 있는 내용 사이에 차이가 있음을 인식합니다.

  1. 정보(.xls, .xlsx)가 있는 Excel 파일을 엽니다.
  2. Excel에서 파일 유형으로 "CSV(Comma Delimited) (*.csv)"를 선택하고 해당 유형으로 저장합니다.
  3. 메모장([프로그램], [시작]메뉴의 [악세사리]에 있음)의 메모장에서 저장한 .csv 파일을 엽니다.
  4. 그런 다음 -> 다른 이름으로 저장...을 선택합니다."save as" 상자 아래에는 "Encoding"이라는 라벨이 붙은 선택 상자가 있습니다.UTF-8을 선택합니다(ANSI를 사용하지 않으면 모든 액센트가 손실되는 등).UTF-8을 선택한 후 원본과 약간 다른 파일 이름으로 파일을 저장합니다.

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

이 답변은 이 포럼에서 인용한 것입니다.

또 하나 도움이 되는 것은 CSV로 저장할 때 인코딩 설정이 가능한 "Numbers"입니다.

메모장++ 사용

그러면 Excel에 의해 저장된 파손된 CSV 파일이 수정되고 적절한 인코딩으로 다시 저장됩니다.

  • Excel에서 CSV 내보내기
  • 메모장에 로드++
  • 부호화 수정
  • 절약하다

Excel은 CP-1252/Windows-1252로 저장됩니다.메모장++에서 CSV 파일을 엽니다.선택한다.

Encoding > Character Sets > Western European > Windows-1252

그리고나서

Encoding > Convert to UTF-8
File > Save

먼저 Notepad++에 인코딩을 전달한 후 변환합니다.이러한 응답 중 일부는 먼저 적절한 인코딩을 설정하지 않고 변환되어 파일이 더욱 엉망이 됩니다.그들은 해야 할 일을 바꿀 것이다.CP-1252에 맞지 않는 캐릭터는 CSV로 저장되었을 때 이미 손실되었습니다.이치노

"nevets1219"는 Google 문서에 대해 옳지만, 단순히 파일을 "가져오기"만 하면 UTF-8로 변환되지 않는 경우가 많습니다.

단, CSV를 기존 Google 스프레드시트로 Import하면 UTF-8로 변환됩니다.

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

  • 기본 Docs(또는 Drive) 화면에서 "Create"(작성) 버튼을 클릭하고 "Spreadsheet(스프레드시트)"를 선택합니다.
  • "파일" 메뉴에서 "가져오기"를 선택합니다.
  • "파일 선택"을 클릭합니다.
  • "스프레드시트 바꾸기"를 선택합니다.
  • 구분 기호로 사용할 문자를 선택하십시오.
  • [ Import ]을 클릭합니다.
  • '파일' 메뉴에서 '다른 이름으로 다운로드' -> CSV(현재 시트)를 선택합니다.

결과 파일은 UTF-8이 됩니다.

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

Office 365 에서는 [Save As]를 실행합니다.이전에는 [CSV(Comma Delimited)]를 선택했을 경우, CSV UTF-8(Comma Delimited)](*.csv)로서 보존할 수 있는 파일 타입의 1개가 됩니다.

파워셸을 사용하는 건 어때?

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

완전히 프로그램화된(또는 적어도 서버측) 솔루션을 찾고 있는 분들을 위해 저는 catdoc의 xls2csv 툴을 사용하여 큰 성공을 거두고 있습니다.

catdoc 설치:

apt-get install catdoc

변환을 수행합니다.

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

이거 너무 빨라요.

때 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 맞다-d utf-8 플래그로 합니다. 그렇지 않으면 기본 출력으로 인코딩됩니다.cp1252암호화하면 정보가 손실될 위험이 있습니다.

:xls2csv또, 와만 동작합니다..xls파일에서는 동작하지 않습니다..xlsxfiles.complete files files files files files files files files.

가장 쉬운 방법: Open Office 및 Google 문서 불필요

  1. 파일을 "유니코드 텍스트 파일"로 저장합니다.
  2. 이제 유니코드 텍스트 파일이 있습니다.
  3. "notepad"로 열고 "Save as"로 저장하여 원하는 "utf-8" 또는 기타 코드 페이지를 선택합니다.
  4. 파일 확장자의 이름을 "txt"에서 "csv"로 변경합니다.그러면 탭 구분 UTF-8 csv 파일이 생성됩니다.
  5. 쉼표로 구분된 파일을 표시하려면csv파일 이름을 변경하고 모든 탭을 쉼표로 바꿉니다. 10하려면 , 1 탭해, 10 을 클릭합니다.Ctrl+H 쉼표를 ,"바꾸기" 필드에서 "모두 바꾸기"를 누릅니다.파일을 저장합니다.UTF-8 csv로 설정합니다.

MS-Office에서 열지 마세요!!!이제 탭으로 구분된 CSV 파일이 생성됩니다.순서 5 를 적용했을 경우는, 쉼표로 구분됩니다.

재미있겠지만 180MB 스프레드시트를 UTF8 CSV 파일에 저장하는 가장 쉬운 방법은 셀을 Excel로 선택하고 복사한 후 클립보드의 내용을 SublimeText에 붙여넣는 것이었습니다.

Mac Excel에서 이 문제에 대한 VBA 솔루션을 찾을 수 없었습니다.UTF-8 텍스트를 출력하는 방법은 없는 것 같습니다.

그래서 나는 결국 VBA를 포기하고 참고 AppleScript를 배워야 했다.그것은 내가 생각했던 것만큼 나쁘지 않았다.

솔루션에 대해서는, http://talesoftech.blogspot.com/2011/05/excel-on-mac-goodbye-vba-hello.html 를 참조해 주세요.

Windows 환경을 상정하고, Excel 에 보존해, 정상적으로 작업합니다만, 보존한 Excel 파일을 Gnome Gnumeric 로 엽니다(무료).Gnome Gnumeric의 스프레드시트를 CSV로 저장합니다.이 스프레드시트는 어쨌든 UTF-8 CSV로 저장됩니다.

간단한 방법: 열려 있는 사무실(여기에서)을 다운로드하고 스프레드시트를 로드하여 Excel 파일을 엽니다(.xls ★★★★★★★★★★★★★★★★★」.xlsx 다음 인지 또는CSV 형식으로 ODF 、 [ format 에서 파일작성 에 따라 가장 합니다.현재 형식 유지"를 선택하고 새 창에서 파일이 작성된 언어에 따라 사용자에게 가장 적합한 옵션을 선택합니다.스페인어에서는 서유럽을 선택합니다(Windows-1252/ WinLatin 1이치노UnicodeUnicode(Unicode))를UTF-8는, 에서는 동작하지

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

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

저도 같은 문제에 부딪혔지만 이에 대한 쉬운 해결책이 있습니다.

  1. Excel 2016 이상에서 xlsx 파일을 엽니다.
  2. [이름 지어 저장(Save As)]에서 다음 옵션을 선택합니다.[ CSV UTF - 8 ( Comma Delimited ) * . csv ]

완벽하게 동작하며 임의의 소프트웨어로 Import할 수 있는 csv 파일이 생성됩니다.SQLITE 데이터베이스에 이 csv 파일을 Import했는데 모든 Unicode 문자를 그대로 사용할 수 있습니다.

같은 문제를 발견하고 이 게시물을 검색했습니다.위 중 어느 것도 나에게 통하지 않았다.마지막으로 Unicode .xls를 .xml로 변환했습니다(다른 이름으로 저장 선택).XML 스프레드시트 2003)에서 올바른 문자가 생성되었습니다.그리고 xml을 해석하기 위한 코드를 작성하고 내용을 추출하여 사용하였습니다.

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)

Excel은 일반적으로 utf8이 아닌 ANSI 인코딩으로 csv 파일을 저장합니다.

파일을 수정하는 방법 중 하나는 메모장 또는 메모장++를 사용하는 것입니다.

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

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

상단 메뉴에서 [Encoding]-> [ Convert to ANSI ]를 선택합니다.

인코딩 -> ANSI로 변환하면 ANSI/UNICode로 인코딩됩니다.Utf8은 Unicode의 서브셋입니다.아마도 ANSI에서는 올바르게 인코딩될 것입니다만, 여기서는 UTF8, @SequenceDigitale에 대해 이야기하고 있습니다.

CSV(쉼표로 구분)로 내보낸 후 Notepad++(free)로 CSV를 열고 [Encoding]> [ Convert ]를 UTF8로 변환하는 등의 빠른 방법이 있습니다.단, 파일당 한 번만 이 작업을 수행해야 합니다.변경 및 내보내기가 필요한 경우 LibreOffice 또는 GDocs 솔루션이 가장 좋습니다.

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

여기에 이미지 설명 입력

notepad++로 .csv를 엽니다.인코딩이 정상인 경우(모든 문자가 표시됨) 인코딩을 누른 다음 ANSI로 변환하여 현재 인코딩을 확인합니다.

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

[ Save Dialog ]> [ Tools ]버튼 > [ Web Options ]> [ Encoding ]탭

같은 문제를 안고 있는데, 이 add in을 발견하게 되었습니다만, 엑셀 2013에서는, 엑셀 2007, 2010 이외에서는 정상적으로 동작하고 있습니다.

언급URL : https://stackoverflow.com/questions/4221176/excel-to-csv-with-utf8-encoding

반응형