我可以从命令行将组织文件中的特定表导出到csv吗?


19

我有一个包含多个表的组织文件

$ 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 |

该文件会定期更新。我有一个解析一个Perl脚本,csv从发行获得的文件M-x org-table-exportfirst-table。我希望能够first-table从命令行导出到csv,因此不必每次都手动执行此操作。这可能吗?


1
为了在Org文件中获取表的内容,您可以执行以下操作(org-babel-ref-resolve "first-table")-这会将表作为列表,然后orgtbl-to-csv在该列表上调用。有关orgtbl-to-csv其他参数,请参见的文档。然后,您可以使用--eval-f选项以批处理模式运行Emacs以执行功能。
wvxvw 2015年

Answers:


24

您可以查找该表,并用于org-table-export导出它。您可以将函数放入文件中,然后加载并批量导出。可能是这样的:

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")))))

然后,使用示例文件,可以像这样批量导出:

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

我对表的搜索有些粗糙,但是可以。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.