Function: org-table-export
org-table-export is an autoloaded, interactive and byte-compiled
function defined in org-table.el.gz.
Signature
(org-table-export &optional FILE FORMAT)
Documentation
Export table to a file, with configurable format.
Such a file can be imported into usual spreadsheet programs.
FILE can be the output file name. If not given, it will be taken
from a TABLE_EXPORT_FILE property in the current entry or higher
up in the hierarchy, or the user will be prompted for a file
name. FORMAT can be an export format, of the same kind as it
used when -mode sends a table in a different format.
The command suggests a format depending on TABLE_EXPORT_FORMAT,
whether it is set locally or up in the hierarchy, then on the
extension of the given file name, and finally on the variable
org-table-export-default-format.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-table.el.gz
;;;###autoload
(defun org-table-export (&optional file format)
"Export table to a file, with configurable format.
Such a file can be imported into usual spreadsheet programs.
FILE can be the output file name. If not given, it will be taken
from a TABLE_EXPORT_FILE property in the current entry or higher
up in the hierarchy, or the user will be prompted for a file
name. FORMAT can be an export format, of the same kind as it
used when `-mode' sends a table in a different format.
The command suggests a format depending on TABLE_EXPORT_FORMAT,
whether it is set locally or up in the hierarchy, then on the
extension of the given file name, and finally on the variable
`org-table-export-default-format'."
(interactive)
(unless (org-at-table-p) (user-error "No table at point"))
(org-table-align) ; Make sure we have everything we need.
(let ((file (or file (org-entry-get (point) "TABLE_EXPORT_FILE" t))))
(unless file
(setq file (read-file-name "Export table to: "))
(unless (or (not (file-exists-p file))
(y-or-n-p (format "Overwrite file %s? " file)))
(user-error "File not written")))
(when (file-directory-p file)
(user-error "This is a directory path, not a file"))
(when (and (buffer-file-name (buffer-base-buffer))
(file-equal-p
(file-truename file)
(file-truename (buffer-file-name (buffer-base-buffer)))))
(user-error "Please specify a file name that is different from current"))
(let ((fileext (concat (file-name-extension file) "$"))
(format (or format (org-entry-get (point) "TABLE_EXPORT_FORMAT" t))))
(unless format
(let* ((formats '("orgtbl-to-tsv" "orgtbl-to-csv" "orgtbl-to-latex"
"orgtbl-to-html" "orgtbl-to-generic"
"orgtbl-to-texinfo" "orgtbl-to-orgtbl"
"orgtbl-to-unicode"))
(deffmt-readable
(replace-regexp-in-string
"\t" "\\t"
(replace-regexp-in-string
"\n" "\\n"
(or (car (delq nil
(mapcar
(lambda (f)
(and (string-match-p fileext f) f))
formats)))
org-table-export-default-format)
t t)
t t)))
(setq format
(org-completing-read
"Format: " formats nil nil deffmt-readable))))
(if (string-match "\\([^ \t\r\n]+\\)\\( +.*\\)?" format)
(let ((transform (intern (match-string 1 format)))
(params (and (match-end 2)
(read (concat "(" (match-string 2 format) ")"))))
(table (org-table-to-lisp)))
(unless (fboundp transform)
(user-error "No such transformation function %s" transform))
(let (buf)
(with-current-buffer (find-file-noselect file)
(setq buf (current-buffer))
(erase-buffer)
(fundamental-mode)
(insert (funcall transform table params) "\n")
(save-buffer))
(kill-buffer buf))
(message "Export done."))
(user-error "TABLE_EXPORT_FORMAT invalid")))))