Puis-je exporter une table spécifique dans un fichier org vers csv à partir de la ligne de commande?


19

J'ai un fichier org avec plusieurs tables

$ cat ~/foo.org
#+Title: hello world

* section 1

lorem ipsum

#+TBLNAME: first-table
| i      | want | to    |
| export | this | table |

#+TBLNAME: second-table
| this | table | is        |
| not  | as    | important |

Ce fichier est mis à jour régulièrement. J'ai un script Perl qui analyse le csvfichier obtenu à partir de l' émission M-x org-table-exportsur first-table. Je voudrais pouvoir exporter first-tablevers csv à partir de la ligne de commande, donc je n'ai pas à le faire manuellement à chaque fois. Est-ce possible?


1
Afin d'obtenir le contenu de la table dans un fichier Org, vous pouvez le faire (org-babel-ref-resolve "first-table")- cela vous donnera la table sous forme de liste, puis appelez orgtbl-to-csvsur cette liste. Voir la documentation de orgtbl-to-csvpour des arguments supplémentaires. Vous pouvez ensuite exécuter Emacs en mode batch pour exécuter votre fonction à l'aide de --evalou d' -foptions.
wvxvw

Réponses:


24

Vous pouvez rechercher la table et l'utiliser org-table-exportpour l'exporter. Vous pouvez placer la fonction dans un fichier, la charger et exporter par lots. Quelque chose comme ça peut-être:

setup.el:

(require 'org)

(defun my-tbl-export (name)
  "Search for table named `NAME` and export."
  (interactive "s")
  (show-all)
  (let ((case-fold-search t))
    (if (search-forward-regexp (concat "#\\+NAME: +" name) nil t)
    (progn
      (next-line)
      (org-table-export (format "%s.csv" name) "orgtbl-to-csv")))))

Ensuite, avec votre fichier d'exemple, vous pouvez exporter par lots comme ceci:

$ emacs --batch foo.org -l setup.el --eval '(my-tbl-export "first-table")'

Ma recherche de la table est un peu grossière, mais ça marche.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.