검색 결과를 Excel에서 열 수 있도록 CSV 파일로 내보내는 기능을 개발 중입니다. 필드 중 하나는 줄 바꿈, 쉼표, 따옴표 등이 포함될 수 있는 자유 텍스트 필드입니다. 이를 방지하기 위해 필드를 큰따옴표(")로 묶었습니다.
그러나 Excel 2007로 데이터를 가져와서 적절한 구분 기호를 설정하고 텍스트 한정자를 큰따옴표로 설정하면 줄 바꿈이 여전히 줄 바꿈에 새 레코드를 생성하여 전체 텍스트 필드가 단일 셀에 표시될 것으로 예상됩니다.
또한 CR/LF(\r\n)를 CR(\r)로만 바꾸고 다시 LF(\n)로만 바꾸어 보았지만 운이 없었습니다.
다른 사용자도 이 동작을 경험한 적이 있나요? 그렇다면 어떻게 해결하셨나요?
TIA,
-J
편집:
다음은 문제를 복제하기 위해 제가 직접 작성한 간단한 파일입니다.
ID,이름,설명
12345>,> Smith, Joe>,> Hey.< brt; 내 이름은 조입니다;
이것을 Excel 2007로 가져오면 머리글 행과 두 개의 레코드가 생깁니다. 'Smith, Joe'의 쉼표가 제대로 처리되고 있다는 점에 유의하세요. 문제를 일으키는 것은 줄 바꿈입니다.
엑셀 (최소한 Office 2007년 CSV 파일 가져와집니다 여부에 따라 다르게 동작할 수 있는 XP) 에서 열린 메뉴 또는 두 번 누르면 파일을 열어서 File->, 탐험가이다.
I have a CSV 파일, 즉 UTF-8 인코딩 및 map_layer 줄 바꿈 일부 셀입니다. 만약 내가 이 파일 열기, s # 39 에서 Excel& File->, 오픈 메뉴, " 가져오기의 CSV"; 마법사에서는 및 파일을 올바르게 임포트한 튀어나올 수 없습니다. 이 경우에도 줄 바꿈 새로 시작 행일 보도했다. 만약 내가 두 번 탐색기 창을 통해 이 파일을 열 수 있는 그런 것이 없이 제대로 열었든 개입이 마법사입니다.
이렇게 할 경우 수동으로 다운로드하십시오 리브레오피스 및 사용 리브레오피스 Calc 임포트하려면 CSV. 그 어느 때보다 훨씬 더 나은 않니다 이런 작업을 했는데, 정보기술 (it), ve 버전니다 excel i& # 39 를 절감할 수 있게 하는 경우 또는 xlsx xls 필요에 따라 전송하십시오 excel 로 된다.
ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."
ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."
그러나 there& # 39 의 catch! Csv 파일 파일을 열 수 있는 유일한 방법은 두 번 클릭하면 작동하잖아 는 한다. 만약 내가 불러오시겠습니까 텍스트 데이터가 고용하곤 이 CSV 의 말을 인용, 그래도 그런 줄 바꿈.
하지만 다른 , # 39 의 there& catch! 작업 현장 seperator (쉼표 중 원본 acrobatconnectcentral. 세미콜론 내 경우) 의 지역 설정에 따라 결정될 것으로 보인다 (설정 아래, 제어판 - > system& # 39 국가 및 언어). 쉼표 (,) 는 노르웨이의, 소수 seperator. 이를 방지하기 위해 문자 및 포지셔닝하십시오 excel 세미콜론 아닌 것 같다. 영국 영어 로케일에 및 해당 컴퓨터에서 다른 컴퓨터로 내가 액세스하도록 설정되었습니다, 첫 번째 예 쉼표로 seperator 작동합니다 (오로지 더블클릭) 와 함께 하나 세미콜론 실제로 실패! 많은 상호 운용성. 이 경우 CSV 온라인 및 사용자 게시할지 Excel, 뭐 형상게시 두 버전 모두 할 수 있는 사람들이 적절한 수의 행뿐만 파일 및 제안하세요 확인할 수 있습니다.
따라서 모든 세부 사항을 I& # 39, ve been afaq afnor 취합하려면 사용할 수 있다.
따라서 누군가가 바란다.
줄 바꿈 제거하시겠습니까 / linefeed 문자 ('\n' 을 (를) 노트패드++). Excel 케리지리턴 문자 ('\r') 를 계속 알 수 있는 별도의 레코드는유지합니다.
개행 문자를 언급한 바와 같이, 항상 확실하게 처리해야 하지만 Excel doesn& # 39 가 지원됩니까 δ1 CSV 필드용 없다. 비슷한 문제를 안고 있는 문제가 아니라 내가 할 수 있는 t # 39, 타사 CSV 인도하심이라만일 인코딩입니다 didn& 향상시키십시오 인코딩입니다 변경.
어떤 방법이 주효했는가 가져다줄래요 개행 문자 ('\n') 는 모두 제거. 이 경우 해당 레코드는 기록하십시오 필드용 축소 효과가 있습니다 하나의 구분된 결합을 케리지리턴 및 개행 문자 (CR / LF). 엑셀 파일을 가져오고 그러면 의해 새로운 기록이 제대로 알고 케리지리턴.
물론 실제 재장착합니다 클리너 해결책은 먼저 줄 바꿈 ('\r\n') 를 임시 문자 조합을 구분을 문자 대신 줄 바꿈 ('\n') 를 선택 (예: 쉼표 받을시간은 세미콜론 파일) 한 후 다시 교체하십니까 임시 캐릭터와 이벤트수정적절한 줄 바꿈.
j # 39 의 Ashley& +1 대한 언급은 하지 않았다. 내가 이 문제를 분할합니다 실행했음 있다. Excel 필요한 것으로 나타났다.
A 개행 문자 (" \n";) 이 말을 구체화하십시오
A 케리지리턴 및 상호 간에 행일 줄 바꿈.
각 행의 구분하는 데 사용할 수 있는 메모장 ++ 내가 제대로 사용할 줄 바꿈 구체화하십시오. 이 항목은 열어 빈 excel 문서를 작성하여 발견된 multiline csv 메모장에서 ++.
내 경험에 대한 설정을 통해 Excel 2010년 프랑스 레지옹 WinXP
비슷한 문제가 있었습니다. 난 이미 일부 트위터 data-in MySQL. 줄 바꿈 (LF 또는 \n) 내에 있는 데이터를 데이터 했다. 난 이미 내보내기하는 요구 사항을 mysql 데이터를 excel 로. 이 LF 는 내 임포트하지 메싱 백업하도록 csv 파일. 그래서 제가 한 다음 -
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
참고 있을 뿐 아니라 크레프 교체하십니까 확인란 렉상드드 잊지 않습니다. (\n \r \t., 또는 LF 확인란 [보면 대화상자의 왼쪽 아래)
거의 10 년 만에 hasn& # 39 의 원본 게시물, Excel, t 향산된 임포트하지 CSV 파일. 하지만 나는 것이 훨씬 더 나은 것으로 임포트하지 HTML 표. 따라서 한 후 결과 HTML 을 사용할 수 있는 HTML 로 파이썬 변환할지 CSV 임포트하십시오 한다.
이 방법의 장점은 다음과 같습니다. (a), (b), t need 너회가 don& 작동하잖아 안정적으로 보내려면 # 39 제 3 자에게 서비스 데이터 (예를 들어 구글 시트), (c), 추가 " fat" 없습니다. 설치 필요 (리브레오피스, 숫자 등) 와 CR, LF (d) 보다 높은 수준의 대부분의 사용자를 위한 무리한 / 문자 및 BOM 표시자는, (e) 와 바이올린 않아도 로케일에 꾸미기야.
다음 단계를 실행할 수 있는 같은 배시 쉘로 deltamove 파이썬 3 가 설치되어 있습니다. Csv 직접 읽을 수 있지만, 파이썬 사용할 수 있습니다. 치프카이트 를 사용할 수 있도록 변환 못하며창조된 중간 JSON. 이 복잡한 CSV 의 파이썬 코드를 처리할 수 있게 않아도 됩니다.
첫째, 'json2html.py' 다음 스크립트입니다 절약합니다 있다. Json 은 html 에서 파일을 판독합니다 스크립트입니다 stdin 및 정보기술 (it) 을 table: 덤프합니다. "'파이썬
import sys, json, html
header_emitted = False make_th 람다 (λ) = s: ,, " < th> %s< /th> ". % (사마레비스카피 (s) 의 경우 다른 " ";)) make_td 람다 (λ) = s: ,, " < td> %s< /td> ". % (사마레비스카피 (s) 의 경우 다른 " ";)) make_tr 람다 (λ) = l, make_cell: ,, " < tr> %s< /tr> ". % (", ", 스타인 ([make_cell (v) v 의 l]) 보기인쇄 (";;;;;; table> < html> < body> \n< ") 제손드로이드 에서 선 (시s.스트딘): lk, lv = zip (* 선자이트마스 ()) 그렇지 않으면 header_emitted: 보기인쇄 (make_tr (lk, make_th)) header_emitted = True 보기인쇄 (make_tr (lv, make_td)) 보기인쇄 (,,, " < /table\n< /body> < /html> ") "'
그런 다음 치프카이트 설치 및 사용 '우리' 입력 파일을 가상 환경에서 치바제슨 채우기할 스크립트입니다. '추측' -I '인수를 통해 세포 유형을 비활성화하려면 것이 좋습니다. "'쉘로 $ 비르투아르노프 python3 피에노프 - p $. ./pyenv/bin/activate pip 설치처 치프카이트 $ i $ 치바제슨 이노푸트리치프 python3 >, json2html.py 우스푸t.사믈 "'
'지금' 우스푸t.사믈 Excel 에서 가져올 수 있습니다. 줄 바꿈 셀의 보존돼 있을 것이다.
선택적으로 너회의 파이썬 가상 환경 지우는중 할 수 있습니다. "'쉘로 $ 비활성화해야 rm - rf 피에노프 $ "'
이 작업한 파일을 사용하여 Mac, csv 열어 한다.
Csv 파일 사용하여 쓸 수 있다.
데이터 = & # 39, 셀 (cell line) 의 첫 번째 줄은 두 번째 줄에 a1\r ";;;;, " b1" 셀입니다 " a1" 셀입니다 a1\r 3rd line) 의 2 제 1 의 첫 번째 줄에 줄을 c1\r 셀입니다 c1" 셀입니다 \n" a2" 셀입니다 \n& # 39;;;;
피레스라이트 (데이터)