2010-04-06 6 views
4

CSV를 조직 모드로 가져오고 싶습니다. 다른 사람들은 이미 CSV를 조직 모드 테이블로 가져 오는 것에 대해 질문했습니다. 그건 내가하려는 일이 아니야. CSV를 조직 모드 속성으로 가져와야합니다.CSV를 조직 모드로 가져 오기

예를 들어

,이 같은 CSV :

Name,Tel,Mobile,Fax 
John,11111,22222,33333 

이 될해야합니다

:PROPERTIES: 
:Name: John 
:Tel: 11111 
:Mobile: 22222 
:Fax: 33333 
:END: 

당신이 그것을 할 수있는 고통 방법을 아시나요?

+0

왜 이러한 값을 태그로 만드시겠습니까? – Mica

+0

속성 값이 태그와 다릅니다. – lecodesportif

답변

3

:

MXreplace-regexpRET\(.*\),\(.*\),\(.*\),\(.*\)RET:PROPERTIES:Cq와 CJ:Name: \1Cq와 CJ:Tel: \2Cq와 CJ:Mobile: \3Cq와 CJ:Fax: \4Cq와 CJ이 작업을 수행하기 위해 필요한 경우:END:RET

많은 변수 CSV 파일들 다른 헤더와 열 수를 사용하면 keyboard macros으로 접근 할 수 있습니다.

user310031의 대답은 그에 대한 좋은 근거가됩니다. 매크로는 버퍼를 각 행으로 좁히고, 그 위에 헤더 행을 삽입하고, CSV mode을 필요로하는 것으로 보이는 csv-transpose을 수행하고및 :END: 행을 추가하고 버퍼를 다시 넓히고 가리 키도록합니다 라인 전에 다음 데이터 행. 그런 다음 나머지 데이터 행을 영역으로 표시하고 C-x C-k r을 입력하기 만하면됩니다.

2

사용 CSV 모드, 교체 - 정규 표현식과 CSV-트랜스와 형식으로 행과 열 트랜스 : (. * \) (. * \)

검색 \, \

가 교체 : : \ 1 \ 2 내가 볼 수있는 가장 쉬운 방법은 영역과 데이터 행을 표시 한 다음 정규 표현식 검색을 사용하고 교체하는 것입니다

0

다음과 같이 할 수 있습니다. 귀하의 예가 너무 명확하지 않습니다. 둘 이상의 행이있는 경우 동일한 머리말에 특성을 반복해서 설정합니다. 이름을 사용하여 새 표제를 작성한 다음 표제에 등록 정보를 설정할 수 있습니다. 아래 코드는 꽤 형식이 잘 지정된 CSV 파일에서 작동합니다.

(let ((lines (with-temp-buffer 
       (insert-file-contents "data.csv") 
       (split-string (buffer-string) "\n"))) 
     (properties) 
     (values)) 

    (setq properties (split-string (car lines) ",")) 

    (loop for line in (cdr lines) 
     do 
     (setq values (split-string line ",")) 
     (loop for property in properties 
       for value in values 
       do 
       (org-entry-put (point) property value)))) 
관련 문제