2014-05-15 9 views
3

Gnumeric에서 ssconvert 명령을 사용하면 ODS 개의 파일을 CSV 개의 파일로 변환합니다. 나는 ... 대부분의 시간을 잘 밖으로 작동 다음 명령Gnumeric ssconvert를 사용하여 ods 파일을 CSV 파일로 변환 할 때 줄 문자를 바꾸거나 무시합니다.

ssconvert -O 'separator=; quoting-mode=never' "f.ods" "f.txt";

을 사용하고 있습니다. 때로는 사용자가 셀 내에서 새로운 라인 문자 (Mac의 OpenOffice 및 LibreOffice에서는 cmd+enter을 눌러이 작업을 수행함)에서 punished 한 셀이 있습니다. 이것은 내가

This is some text. Here comes a newline that should be ignored;Some data; Some more data

내에서 모든 줄 바꿈 문자를 대체 변환 과정에 그것을 가능 얻을 그래서 대신

This is some text. Here comes a newline that should be ignored;Some data;Some more data

의, 여분의 행을 점점 이후에 생성 된 CSV 파일이 만들어 예를 들어 *과 같은 다른 셀을 사용하고 있습니까? 또는 어떻게 든 셀 내의 모든 인라인 문자를 무시하도록 컴퓨터를 설정할 수 있습니까?

답변

7

여기에 문제의 :

ssconvert -O 'separator=;quoting-mode=never'"f.ods" "f.txt";

필요한 경우, 당신은 여기에 스스로 발을 촬영하고 인용에서 ssconvert을 방지함으로써, 당신의 문제는 줄 바꿈에 한정되는 것은 아니다. 예를 들어,이 스프레드 시트 :

example.txt

A1;B1;C1 
A2;XX;B2 
YY;C2 

좋은 :

example.ods

enter image description here

이에 ssconvert 명령으로 변환된다 행운을 꼬다.

변환 후 혼란을 되돌리려 고 시도하는 것 (안정적으로 수행하는 것이 불가능할 것임) 또는 변환하기 전에 소스 ODS 파일을 사전 처리하는 것 (미친 것입니다. CSV로 변환하는 경우) 아마도 에 OWD 문서로 말미암는이 발생하지 않기를 원하기 때문에 이러한 종류의 근본적인 결함이없는 CSV 방언을 사용해야합니다.

즉, 데이터를 인용해야합니다. 그것은 ssconvert은 기본 설정에 구분 기호를 포함하는 셀을 인용 할만큼 지능이 아니라고 밝혀 :

$ ssconvert -O 'separator=;' example.ods example-2.txt 
$ cat example-2.txt 
A1;B1;C1 
A2;XX;"B2 
YY";C2 

...그래서 당신은 모든 것을 인용 필요 해요 :

$ ssconvert -O 'separator=; quoting-mode=always' example.ods example-3.txt 
$ cat example-3.txt 
"A1";"B1";"C1" 
"A2;XX";"B2 
YY";"C2" 

는 CSV이 주변에 신뢰할 수있는 방법은 없습니다; 따옴표 붙은 CSV가 이고 근본적으로 데이터 형식으로이 (가) 잘못 되었기 때문에 데이터를 올바르게 인용하는 것 이외의 해결책이 있다면 다시 한 번 물어볼 것입니다.

다시 말해서 : 따옴표 붙이지 않은 CSV에서 근본적인 결함을 해결하지 마십시오. 모호한 데이터 형식을 사용하여 직접 만든 모든 문제를 해결했다고 생각하더라도 어느 시점에 을 예상하지 못한 상황이 발생하면이 나오고 여유있게 회개하게됩니다.

+2

위대한 답변! 감사! – Speldosa