Excel에서 열 수 있도록 검색 결과를 CSV 파일로 내보내는 기능을 개발 중입니다. 필드 중 하나는 줄 바꿈, 쉼표, 따옴표 등을 포함 할 수있는 자유 텍스트 필드입니다.이를 방지하기 위해 필드를 큰 따옴표 ( “)로 묶었습니다.
그러나 데이터를 Excel 2007로 가져 와서 적절한 구분 기호를 설정하고 텍스트 한정자를 큰 따옴표로 설정하면 줄 바꿈은 줄 바꿈에서 여전히 새 레코드를 생성합니다. 단세포.
또한 CR / LF (\ r \ n)를 CR (\ r)로 바꾸고 다시 LF (\ n)로 바꾸려고했지만 운이 없습니다.
다른 사람이이 문제를 겪었습니까? 그렇다면 어떻게 해결 했습니까?
티아,
-J
편집 :
여기에 문제를 복제하기 위해 손으로 쓴 빠른 파일이 있습니다.
ID, 이름, 설명
“12345”, “Smith, Joe”, “Hey.
내 이름은 Joe입니다.”
이것을 Excel 2007로 가져올 때 헤더 행과 두 개의 레코드가 생깁니다. “Smith, Joe”의 쉼표가 올바르게 처리되고 있습니다. 문제를 일으키는 줄 바꿈 일뿐입니다.
답변
파일-> 열기 메뉴에서 파일을 열거 나 탐색기에서 파일을 두 번 클릭하여 CSV 파일을 가져올 지 여부에 따라 Excel (적어도 XP의 Office 2007에서는)이 다르게 작동 할 수 있습니다.
UTF-8 인코딩으로 된 CSV 파일이 있으며 일부 셀에 줄 바꿈이 포함되어 있습니다. Excel의 파일-> 열기 메뉴에서이 파일을 열면 “CSV 가져 오기”마법사가 나타나고 파일을 올바르게 가져올 수 없습니다. 줄 바꿈은 인용해도 새 행을 시작합니다. 탐색기 창에서이 파일을 두 번 클릭하여 열면 마법사의 개입없이 올바르게 열립니다.
답변
제안 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.
실제로 작동하는 것 (모든 인코딩에서) :
csv-file에서 데이터를 복사 / 붙여 넣기 (편집기에서 연 후) “열의 텍스트”를 수행하십시오.-> 작동하지 않습니다.
다음 탭으로 이동하여 다시 복사 / 붙여 넣기 (클립 보드에있는 것과 동일한 내용)-> 이제 자동으로 작동합니다.
답변
이 작업을 수동으로 수행하는 경우 LibreOffice를 다운로드하고 LibreOffice Calc를 사용하여 CSV를 가져 오십시오. 내가 시도한 Excel 버전보다 훨씬 나은 작업을 수행하며 나중에 Excel로 전송 해야하는 경우 필요에 따라 XLS 또는 XLSX에 저장할 수 있습니다.
그러나 Excel에 갇혀 있고 더 나은 수정이 필요한 경우 방법이있는 것 같습니다. 그것은 로케일에 의존적 인 것 같습니다 (내 겸손한 견해로는 바보처럼 보입니다). Excel 2007은 없지만 Excel 2010과 예제가 있습니다.
ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."
작동하지 않습니다. 메모장에 작성하고 다른 이름으로 저장 …을 선택했으며 저장 버튼 옆에 인코딩을 선택할 수 있습니다. 제안 된대로 UTF-8을 선택했지만 운이 없습니다. 쉼표를 세미콜론으로 변경하면 나에게 도움이되었습니다. 나는 다른 것을 바꾸지 않았으며 효과가있었습니다. 따라서 예제를 다음과 같이 변경하고 메모장에 저장할 때 UTF-8 인코딩을 선택했습니다.
ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."
그러나 캐치가 있습니다! 작동하는 유일한 방법은 CSV 파일을 두 번 클릭하여 Excel에서 여는 경우입니다. 텍스트에서 데이터를 가져 오고이 CSV를 선택한 경우 인용 된 줄 바꿈에서 여전히 실패합니다.
그러나 또 다른 것이 있습니다 캐치가 있습니다! 작업 필드 구분 기호 (원본 예제에서는 쉼표, 필자의 경우 세미콜론)는 시스템의 국가 별 설정 (제어판-> 지역 및 언어에서 설정)에 따라 달라집니다. 노르웨이에서 쉼표는 소수점 구분 기호입니다. Excel 은이 문자를 피하고 세미콜론을 선호합니다. 영국 영어 로케일로 설정된 다른 컴퓨터에 액세스 할 수 있으며 해당 컴퓨터에서 쉼표 구분 기호가있는 첫 번째 예제는 제대로 작동하고 (더블 클릭에서만) 세미콜론이있는 컴퓨터는 실제로 실패합니다! 상호 운용성 이 CSV를 온라인으로 게시하려고하고 사용자에게 Excel이있는 경우 두 버전을 모두 게시해야하고 사람들이 어떤 파일이 올바른 행 수를 제공하는지 확인하는 것이 좋습니다.
따라서이 작업을 수행하기 위해 수집 할 수 있었던 모든 세부 사항은 다음과 같습니다.
- BOM과 함께 파일을 UTF-8로 저장해야합니다. 이는 UTF-8을 선택할 때 메모장이 수행하는 것입니다. BOM없이 UTF-8을 시도했지만 (Notepad ++에서 쉽게 전환 할 수 있음) 문서를 두 번 클릭하면 실패합니다.
- 국가 별 설정에서 소수점 구분 기호가 아닌 쉼표 또는 세미콜론 구분 기호를 사용해야합니다. 다른 캐릭터도 효과가 있을지 모르겠지만
- “문자가 포함 된 줄 바꿈이 포함 된 필드를 인용해야합니다.
- 텍스트 필드와 레코드 구분 기호로 Windows 줄 끝 (\ r \ n)을 사용했습니다.
- 파일을 두 번 클릭하여 열어야 텍스트에서 데이터를 가져올 수 없습니다.
이것이 누군가를 돕기를 바랍니다.
답변
나는 마침내 문제를 발견했다!
ASCII 또는 UTF-8 대신 유니 코드 인코딩을 사용하여 파일을 작성하는 것으로 나타났습니다. FileStream에서 인코딩을 변경하면 문제가 해결되는 것 같습니다.
모든 제안에 감사드립니다!
답변
짧은 답변
줄 바꿈 / 줄 바꿈 문자를 제거하십시오 ( \n
Notepad ++ 사용). Excel은 여전히 캐리지 리턴 문자 ( \r
)를 인식하여 레코드를 분리합니다.
긴 답변
언급 한대로 줄 바꿈 문자는 CSV 필드 내에서 지원되지만 Excel이 항상 정상적으로 처리하지는 않습니다. 인코딩 문제가 있었지만 인코딩 변경으로 개선되지 않은 타사 CSV와 비슷한 문제에 직면했습니다.
나를 위해 일한 것은 모든 줄 바꿈 문자 ( \n
)를 제거하는 것이 었습니다 . 이는 캐리지 리턴과 줄 바꾸기 (CR / LF)의 조합으로 레코드가 분리되어 있다고 가정 할 때 필드를 단일 레코드로 접는 효과가 있습니다. 그러면 Excel에서 파일을 올바르게 가져오고 캐리지 리턴으로 새 레코드를 인식합니다.
분명한 해결책은 먼저 실제 줄 바꿈 ( \r\n
)을 임시 문자 조합으로 바꾸고, 줄 바꿈 ( \n
)을 선택하는 분리 문자 (예 : 세미콜론 파일의 쉼표)로 바꾼 다음 임시 문자를 적절한 줄 바꿈으로 다시 바꾸는 것입니다.
답변
J Ashley의 댓글에 +1 나는 또한이 문제에 부딪쳤다. Excel에는 다음이 필요합니다.
-
인용 된 문자열의 줄 바꿈 문자 ( “\ n”)
-
각 행 사이의 캐리지 리턴과 개행.
예 :
“테스트”, “여러 줄 항목 \ n 여러 줄 항목”\ r \ n “Test2”, “여러 줄 항목 \ n 여러 줄 항목”\ r \ n
메모장 ++를 사용하여 각 행을 올바르게 구분하고 문자열에 줄 바꿈 만 사용했습니다. 빈 Excel 문서에서 여러 줄 항목을 만들고 메모장 ++에서 CSV를 열어서 이것을 발견했습니다.
답변
필드에 선행 공백이 있으면 Excel은 큰 따옴표를 텍스트 한정자로 무시합니다. 해결책은 쉼표 (필드 구분 기호)와 큰 따옴표 사이의 선행 공백을 제거하는 것입니다. 예를 들면 다음과 같습니다.
부서진 :
이름, 제목, 설명
“John”, “Mr.”, “내 상세 설명”
작업 :
이름, 제목, 설명
“John”, “Mr.”, “내 상세 설명”