比如当我们有一个输出table的code block:
#+name: data-table
#+begin_src emacs-lisp :results table
'((1 2 3)
(23 4 5)
(345 55 2)
(34 33 6))
#+end_src
并且还有一个已经设计好的空表格(出于某种原因,需要先设计这个表格的样式):
| C1 | C2 | C3 |
| | | |
| | | |
| | | |
| | | |
然后,如果想要将code block的输出直接导入(通过公式的方式或者其他,已经存在那个空表格应该是一个org的table)到上面设计好的表格区域@2$1…@5$3(这个例子比较简单直接用code block得到这样的一个表格可能更简单 ),大佬们知道有可能的实现的方法吗?还是说我的思路错了呢?
最终期望的结果像这样:
| C1 | C2 | C3 |
| 1 | 2 | 3 |
| 23 | 4 | 5 |
| 345 | 55 | 2 |
| 34 | 33 | 6 |
(setq my/head "\n| C1 | C2 | C3 |\n")
(setq my/table '((1 2 3)
(23 4 5)
(345 55 2)
(34 33 6)))
(defun my/org-create-table-from-list (plist)
(when (string-match "\\S-" (buffer-substring (point-at-bol) (point-at-eol)))
(end-of-line 1)
(newline))
(insert my/head)
(let ((col (current-column))
(name (plist-get plist :name)))
(while plist
(if (eq (car plist) :name)
(setq plist (cddr plist))
(while plist
(let ((lcol (car plist)))
(while lcol
(insert " | ")
(insert (number-to-string (car lcol)))
(setq lcol (cdr lcol))))
(insert " \n ")
(setq plist (cdr plist))))))
(beginning-of-line -2)
(org-table-align))
(my/org-create-table-from-list my/table)
| C1 | C2 | C3 |
| 1 | 2 | 3 |
| 23 | 4 | 5 |
| 345 | 55 | 2 |
| 34 | 33 | 6 |
感谢!
想知道的是,这个方案 my/head 可以是一个org的表格吗?
我的本义是想通过公式的方式去做这个工作(类似于:#+TBLFM: @2$1…@5$3=‘(my/org-create-table-from-list ##the_result_of_code_block##)
这样的操作)。