sourcetip

Excel 2007에서 줄 바꿈이 있는 CSV Import

fileupload 2023. 4. 13. 21:05
반응형

Excel 2007에서 줄 바꿈이 있는 CSV Import

검색 결과를 Excel로 여는 CSV 파일로 내보내는 기능을 개발 중입니다.필드 중 하나는 줄 바꿈, 쉼표, 따옴표 등을 포함하는 자유 텍스트 필드입니다.이에 대응하기 위해 필드를 큰따옴표("")로 묶었습니다.

단, 데이터를 Excel 2007으로 Import하여 적절한 딜리미터를 설정하고 텍스트 한정자를 이중 따옴표로 설정해도 줄 바꿈에 새 레코드가 생성되므로 텍스트 필드 전체가 단일 셀에 표시됩니다.

CR/LF(\r\n)를 CR(\r)로 교체하고 LF(\n)로 교체해 보았습니다만, 잘 되지 않습니다.

다른 사람이 이 동작을 경험한 적이 있습니까?그렇다면 어떻게 고쳤습니까?

TIA,
- . - J.

★★★★★★
여기 문제를 재현하기 위해 손으로 쓴 빠른 파일이 있습니다.

아이디, ''', '''
" Joe" " "12345" "12345" "12345", "12345" "12345", "12345"
저는 조라고 합니다.

이것을 Excel 2007에 Import 하면 헤더 행과 2개의 레코드가 됩니다."Smith, Joe"의 쉼표는 올바르게 처리되고 있습니다.문제가 되는 것은 줄 끊기뿐입니다.

Excel(최소한 XP의 Office 2007에서는)은 CSV 파일을 [File]-> [Open]메뉴에서 열거나 탐색기에서 파일을 더블 클릭하여 Import하는지에 따라 동작이 달라집니다.

CSV 파일은 UTF-8 인코딩으로 일부 셀에 줄바꿈이 포함되어 있습니다.Excel의 [File]-> [Open]메뉴에서 이 파일을 열면 [import CSV]마법사가 뜨고 파일을 올바르게 Import할 수 없습니다.따옴표로 묶어도 새 행이 시작됩니다.탐색기 창에서 파일을 두 번 클릭하여 열면 마법사의 개입 없이 파일이 올바르게 열립니다.

제안된 해결책 중 어느 것도 나에게 효과가 없었다.

실제로 동작하는 것(인코딩의 경우):

csv 파일에서 데이터를 복사/붙여넣기(텍스트에디터로 열기)한 후 "텍스트에서 열로" --> 데이터가 잘못 변환됩니다.

다음 스테이프는 가장 가까운 빈 열 또는 빈 워크시트로 이동하여 다시 복사/붙여넣기(클립보드에 이미 있는 것과 동일) --> 자동으로 동작합니다.

이 작업을 수동으로 수행할 경우 LibreOffice를 다운로드하고 LibreOffice Calc를 사용하여 CSV를 Import합니다.지금까지 사용해 본 Excel 버전보다 훨씬 뛰어난 성능을 발휘하며, 나중에 Excel로 전송해야 할 경우 필요에 따라 XLS 또는 XLSX에 저장할 수 있습니다.

하지만 만약 당신이 Excel에 갇혀서 더 나은 수정이 필요하다면, 방법이 있을 것 같습니다.지역 의존적인 것 같습니다(내 생각에 바보같습니다).Excel 2007은 가지고 있지 않지만 Excel 2010은 가지고 있습니다.다음의 예를 제시하겠습니다.

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

동작하지 않습니다.메모장에 써서 Save as...를 선택했고, Save 버튼 옆에 있는 인코딩을 선택할 수 있습니다.나는 제안대로 UTF-8을 선택했지만 운이 없었다.그래도 콤마를 세미콜론으로 바꾼 건 효과가 있었어요.다른 건 안 바꿨는데, 효과가 있었어요.그래서 예를 다음과 같이 변경하고 메모장에 저장할 때 UTF-8 인코딩을 선택했습니다.

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

하지만 함정이 있어요!CSV 파일을 더블 클릭하여 Excel로 여는 방법밖에 없습니다.텍스트에서 데이터를 Import하려고 하고 이 CSV를 선택해도 따옴표로 묶인 줄바꿈에서 실패합니다.

하지만 또 다른 함정이 있습니다!작업 필드 구분자(원래 예에서는 콤마, 이 예에서는 세미콜론)는 시스템의 [Regional Settings](컨트롤 패널 -> [ Region and Language ](지역 및 언어)에 따라 달라집니다.노르웨이에서 쉼표는 소수 구분 기호입니다.Excel은 이 문자를 피하고 세미콜론을 선호하는 것 같습니다.나는 다른 컴퓨터에 영국 영어 로케일로 설정되어 있는 것에 액세스 할 수 있습니다.그 컴퓨터에서는 콤마 구분자가 있는 첫 번째 예는 정상적으로 동작합니다(두 번 클릭했을 때만). 세미콜론이 있는 컴퓨터에서는 실제로 실패합니다.상호 운용성은 이 정도.이 CSV를 온라인으로 공개하고 사용자가 Excel을 가지고 있을 경우 두 버전을 모두 공개하고 올바른 행 수를 제공하는 파일을 확인하도록 제안해야 합니다.

이 기능을 수행하기 위해 수집한 모든 세부 사항은 다음과 같습니다.

  1. 파일을 BOM과 함께 UTF-8로 저장해야 합니다. BOM을 사용하지 않고 UTF-8(메모장++에서 쉽게 전환할 수 있음)을 사용했지만 문서를 두 번 클릭할 수 없습니다.
  2. 지역 설정에서 쉼표 또는 세미콜론 구분 기호를 사용해야 하지만 소수점 구분 기호인 구분 기호를 사용할 수는 없습니다.아마 다른 캐릭터들도 먹히겠지만, 어떤 캐릭터인지 모르겠어요.
  3. 새 행이 포함된 필드에 " 문자를 따옴표로 묶어야 합니다.
  4. 텍스트 필드와 레코드 구분 기호로 Windows 행 끝(\r\n)을 모두 사용해 보았습니다.
  5. 파일을 두 번 눌러 열어야 합니다. 텍스트에서 데이터를 가져올 수 없습니다.

이게 도움이 됐으면 좋겠네요.

드디어 문제를 발견했어!

ASCII나 UTF-8이 아닌 Unicode 인코딩을 사용하여 파일을 쓰고 있었습니다.FileStream에서 인코딩을 변경하면 문제가 해결된 것 같습니다.

제안해 주셔서 감사합니다!

Google 시트를 사용하여 CSV 파일을 가져옵니다.

그러면 엑셀에서 사용하기 위해 내보낼 수 있습니다.

단답

합니다(「」/「」).\n(메모장++)를 사용합니다. 문자Excel)를 계속 합니다.\r를 사용하여 를 사용하여 레코드를 분리합니다.

장황한 답변

앞서 설명한 바와 같이 CSV 필드 내에서 줄바꿈 문자가 지원되지만 Excel이 항상 적절하게 처리되는 것은 아닙니다.서드파티제 CSV에서도 비슷한 문제가 발생했지만 인코딩 변경이 개선되지 않았습니다.

줄바꿈 문자)를 모두 이었다.\n이렇게 하면 레코드가 캐리지 리턴과 뉴라인(CR/LF)의 조합으로 구분되어 있다고 가정하여 필드가 단일 레코드로 축소됩니다.그런 다음 Excel이 파일을 올바르게 가져오고 캐리지 리턴을 통해 새 레코드를 인식합니다.

, 보다 은, , 행즉, 새로운 행)을 치환하는 입니다.\r\n\n(예를 들어 세미콜론 파일의 쉼표 등)를 선택한 후 임시 문자를 다시 올바른 줄바꿈으로 바꿉니다.

필드에 선행 공백이 포함되어 있는 경우 Excel은 텍스트 한정자로 큰따옴표를 무시합니다.해결책은 콤마(필드 구분자)와 이중 따옴표 사이의 선행 공백을 제거하는 것입니다.예를 들어 다음과 같습니다.

★★★★★★★★★★★★★★★★」
, ( ), ( ), ( ), ( )
'', description', 'My detailed description', 'My detailed description', 'My description 'My

★★★★
(Description), 이름, 설명(Description)
"Mr" " description "My detail description" "My description" "My detail description" "My

이 문제에 부딪혀 확실한 답을 찾고 있는 사람이 있다면 (LibreOffice를 언급하는 사람에게 크레딧:

1) LibreOffice 2)를 설치하고 파일을 Import 합니다 3) 내 txt 파일의 필드는 ODS 파일로 구분하여 "4)로 둘러싸인 문자 필드는 Excel 6에서 ODS 파일을 엽니다.xls(x) 7) Done. 8) Done으로 저장하면 완벽하게 작동하여 큰 시간을 절약할 수 있습니다.

개요

처음 게시한 지 거의 10년이 지났지만 Excel은 CSV 파일의 Import가 개선되지 않았습니다.그러나 HTML 테이블을 Import 하는 것이 훨씬 낫다는 것을 알게 되었습니다.따라서 Python을 사용하여 CSV를 HTML로 변환한 후 결과 HTML을 Excel로 가져올 수 있습니다.

이 방법의 장점은 다음과 같습니다. (a) 신뢰성 있게 동작하고, (b) 데이터를 서드파티 서비스로 전송할 필요가 없으며(예: Google 시트), (c) 대부분의 사용자에 대해 별도의 "뚱뚱한" 설치(LibreOffice, Numbers 등), (d) CR/LF 문자 및 BOM 마커를 조작할 필요가 없습니다(e).

순서

다음 단계는 Python 3이 설치되어 있는 한 모든 bash-like 쉘에서 실행할 수 있습니다.Python을 사용하여 CSV를 직접 읽을 수 있지만 csvkit은 JSON으로 중간 변환하는 데 사용됩니다.따라서 Python 코드의 CSV 복잡함을 처리할 필요가 없습니다.

을 '기다리다'로 합니다.json2html.pyJSON의 HTML의 Stdinstdin은 JSON입니다.

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

다음 가상 하고 csvkit을 사용합니다.csvjson입력 파일을 스크립트에 제공합니다..-I★★★★

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

, 이제output.htmlExcel 할 Import 。셀의 줄 바꿈은 유지됩니다.

선택적으로 Python 가상 환경을 정리할 수 있습니다.

$ deactivate
$ rm -rf pyenv

J Ashley의 코멘트에 +1.저도 이 문제에 부딪혔어요.Excel에는 다음이 필요한 것으로 나타났습니다.

  • 따옴표로 묶인 문자열의 줄바꿈 문자("\n")

  • 각 행 사이의 캐리지 리턴 및 줄바꿈.

예.

"Test", "Multiline item\n
multiline item"\r\n
"Test2", "Multiline item\n
multiline item"\r\n

메모장 ++를 사용하여 각 행을 올바르게 구분하고 문자열에 줄바꿈만 사용했습니다.빈 Excel 문서에서 여러 줄의 엔트리를 작성하고 메모장 ++에서 csv를 열면 이 사실을 알 수 있습니다.

Excel 버전에서는 Power Query를 사용하여 멀티라인 CSV를 쉽게 Import할 수 있습니다(Excel 365 버전 2207에서 테스트 완료).

  1. 데이터 탭으로 이동
  2. 리본에서 "텍스트/CSV에서"를 클릭합니다.
  3. 파일을 선택하고 Import를 클릭합니다.
  4. Power Query Editor를 열려면 "데이터 변환"을 엽니다.
  5. Power Query Editor 리본에서 "데이터 소스 설정"을 클릭합니다.
  6. "소스 변경"을 클릭합니다.
  7. "줄 바꿈" 드롭다운에서 "따옴표로 묶은 줄 바꿈 무시"를 선택합니다.
  8. [확인] -> [닫기] -> [닫기&로드]을 클릭합니다.

메모장++에 붙여넣고 [Encoding]> [ Encoding in ANSI ]를 선택하여 다시 모두 복사하여 Excel에 붙여넣습니다.

저도 비슷한 문제가 있었어요.MySQL에 트위터 데이터가 있어요.데이터에는 Line Feed(LF 또는 \n)가 포함되어 있습니다.MySQL 데이터를 Excel로 내보내야 했습니다.LF가 csv 파일의 Import를 방해하고 있었습니다.그래서 나는 다음과 같이 했다.

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

메모- CRLF 또는 LF를 교환할 때는 반드시 Expended(\n,\r,\t...)를 체크해 주십시오.확인란 [대화상자 왼쪽 아래 보기]

MacOS에서 숫자를 사용해 보십시오.

Mac OS에 액세스할 수 있는 경우 Apple 스프레드시트 Numbers는 Excel에서 처리할 수 없는 복잡한 여러 줄 CSV 파일을 쉽게 제거할 수 있습니다.를 열기만 하면 됩니다..csv엑셀을 사용하다

프랑스 지역 설정을 사용한 WinXP에서의 Excel 2010 사용 경험

  • Import한 csv 구분자는 지역 설정의 목록 구분자(내 경우)에 대응해야 합니다.
  • 탐색기에서 파일을 두 번 클릭해야 합니다.엑셀에서 열지 마세요

Excel은 CSV를 취급할 때 엄청나게 망가져 있습니다.Libre Office가 훨씬 더 일을 잘합니다.그래서 알아냈죠

  • 파일은 BOM과 함께 UTF-8로 인코딩되어야 합니다.따라서 아래 모든 포인트에 대해 고려해 주십시오.
  • 파일 탐색기에서 여는 것이 가장 좋은 결과를 얻을 수 있습니다.
  • Excel 내에서 열면 다음 두 가지 결과가 나타납니다.
    • ASCII 문자만 있는 경우는, 대부분의 경우 동작합니다.
    • ASC가 아닌 경우II 캐릭터, 줄 바꿈이 엉망이 됩니다.
  • OS 의 지역 설정에 설정되어 있는 소수 구분자에 크게 의존하고 있는 것 같기 때문에, 적절한 것을 선택할 필요가 있습니다.
  • OS나 Office 버전에 따라 동작도 다를 수 있습니다.

Excel 2016용입니다.

Excel Wizard를 사용하여 csv 파일 내에서 줄 바꿈과 동일한 문제가 발생하였습니다.

그 후 "New Query" 기능: Data -> New Query -> From File -> From CSV -> From 파일 선택 -> Import -> Load로 시도했습니다.

같은 문제를 안고 있는 여러분 모두에게 매우 빠르게 해결했습니다.

Excel 2019에서는 Data -> Import from text file / CSV를 통한 CSV 파일 작업에서도 같은 문제가 있었습니다.연결이 확립되고 데이터가 동기화되면 줄 바꿈으로 인한 열 이동으로 인해 xx 오류가 보고되었습니다.

나는 이것을 어떻게 해서 해결할 수 있었다.

  1. 쿼리를 편집합니다(쿼리 -> 편집).

  2. 그러면 Power Query Editor가 열립니다.

  3. [시작] -> [상세 에디터]로 이동합니다.

  4. 이렇게 하면 쿼리가 텍스트 형식으로 열립니다.여기서 #2 행에는 다음과 같은 명령이 있습니다.

    소스 = Csv.문서(파일)목차("my.csv", [Delimiter="", ......, QuoteStyle=DelimiterStyle.없음])

  5. QuoteStyle을 변경합니다.QuoteStyle에 없음.Csv

  6. [ Finish ]을 클릭합니다.

  7. 적용 후 닫기

매뉴얼은 https://learn.microsoft.com/en-us/powerquery-m/csv-document 에서 찾을 수 있습니다.

주의: UI에서 "숨겨진" 위치를 찾았습니다.파워 쿼리 편집기에서 데이터 소스 설정, 소스 변경(왼쪽 아래)을 클릭하면 줄 바꿈 콤보에서 따옴표 사이의 줄 바꿈 무시로 표시됩니다.

NB2. 여기 Dutch Excel에서 작업하고 있기 때문에 위의 버튼 캡션 등의 번역이 조금 어긋날 수 있습니다.

CSV 포맷이 아닌 텍스트 포맷으로 Import가 이루어진다면 Excel로 직접 Import가 가능했던 것입니다.M/

줄 바꿈이 있는 셀을 사용하여 새 시트를 만들고 csv에 저장한 다음 줄 끝 문자(메모장++ 등)를 표시할 수 있는 에디터로 엽니다.이렇게 하면 셀 내의 줄 바꿈은 LF로 코드화되어 있고, "실제" 줄 끝은 CR LF로 코드화되어 있습니다.Voila에서는 Excel을 위한 "올바른" csv 파일을 생성하는 방법을 알 수 있습니다.

또, csv 파일(콤마 구분, 큰따옴표로 구분된 문자열)도 따옴표로 묶인 문자열에 LF가 포함되어 있습니다.이것들은 Square 파일을 다운로드한 것입니다.데이터를 가져오지만 텍스트 파일로 가져오는 대신 "HTML에서"로 가져옵니다. 이번에는 따옴표로 묶인 문자열의 LF를 무시합니다.

Mac에서는 csv를 사용하여 파일을 Excel로 열 수 있었습니다.

python을 사용하여 csv 파일을 씁니다.

data='셀 a1의 첫 번째 줄 셀 a1\r의 두 번째 줄 셀 a1의 세 번째 줄 셀 b1", 셀 c1의 첫 번째 줄 셀 c1\r의 두 번째 줄 셀 a2의 첫 번째 줄\n'

file.write(데이터)

이 경우 메모장++에서 CSV를 열고 추가SEP=","첫 번째 줄에서는 CSV를 줄 바꿈으로 열고 Excel에서는 utf-8을 문제없이 열 수 있습니다.

세퍼레이터를 콤마(,)가 아닌 TAB(\t)로 바꿉니다.그런 다음 편집기에서 파일을 열고(Notepad 등) 내용을 복사한 후 Excel 파일에 붙여넣습니다.

최신 버전의 Excel에서는 이 작업이 훨씬 쉬워진 것 같습니다.

  1. "Data" -> "Get Data (Power Query)"로 이동합니다.
  2. 대화상자가 열리면 오른쪽에 있는 "텍스트/CSV"를 선택합니다.
  3. 파일을 검색한 후 "다음"을 클릭하여 권장사항을 따릅니다(내 경우 Excel은 UTF8을 올바르게 인식하고 셀이 ";"로 구분되어 텍스트 식별자가 큰따옴표(")로 구분되어 있습니다).
  4. 끝났어!

로드하는 데 시간이 좀 걸렸지만, 나중에 자동 포맷된 테이블이 정말 보기 좋았고, 여러 줄의 엔트리가 여전히 같은 엔트리의 일부라는 것을 알게 되었습니다.

여러 줄을 올바르게 표시하려면 셀 형식을 지정하고 "Alignment"에서 "텍스트 줄 바꿈" 확인란을 클릭합니다.그럼 마지막 문제가 해결되겠군요

행운을 빌어요!;-)

언급URL : https://stackoverflow.com/questions/2668678/importing-csv-with-line-breaks-in-excel-2007

반응형