5

CSVをOrg-modeにインポートしたいと思います。CSVをOrgモードテーブルにインポートすることについてすでに質問している人もいます。それは私がやろうとしていることではありません。CSVをOrg-modeプロパティにインポートする必要があります。

たとえば、次のようなCSV:

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

次のようになります。

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

あなたはそれをするための痛みのない方法をたまたま知っていますか?

4

3 に答える 3

4

私が見ることができる最も簡単な方法は、データ行を領域としてマークし、次に正規表現検索と置換を使用することです。

M-x replace-regexp RET \(.*\),\(.*\),\(.*\),\(.*\) RET :PROPERTIES: C-q C-j :Name: \1 C-q C-j :Tel: \2 C-q C-j :Mobile: \3 C-q C-j :Fax: \4 C-q C-j :END: RET

ヘッダーと列数が異なる多くの変数 CSV ファイルに対してこれを行う必要がある場合は、おそらくキーボード マクロを使用してアプローチします。

user310031 の答えは、そのための良い基礎になります。マクロは、バッファーを各行に絞り込み、その上にヘッダー行を挿入し、 ( CSV モードcsv-transposeが必要と思われる) 検索と置換を実行し、and行を追加し、バッファーを再び広げ、行にポイントを残すことができます。次のデータ行の前。次に、残りのデータ行をリージョンとしてマークし、.:PROPERTIES::END:C-x C-k r

于 2011-01-17T00:57:35.430 に答える
2

csv-mode を使用し、csv-transpose で行と列を転置し、replace-regexp でフォーマットします。

検索\(.*\),\(.*\)

置換: :\1: \2

于 2010-04-06T13:05:56.593 に答える
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))))
于 2014-12-02T01:04:10.413 に答える