Previous: , Up: Column view   [Contents][Index]

7.5.3 Capturing column view

Since column view is just an overlay over a buffer, it cannot be exported or printed directly. If you want to capture a column view, use a columnview dynamic block (see Dynamic blocks). The frame of this block looks like this:

* The column view
#+BEGIN: columnview :hlines 1 :id "label"


This dynamic block has the following parameters:


This is the most important parameter. Column view is a feature that is often localized to a certain (sub)tree, and the capture block might be at a different location in the file. To identify the tree whose view to capture, you can use 4 values:

local     use the tree in which the capture block is located
global    make a global view, including all headings in the file
          run column view at the top of this file
"ID"      call column view in the tree that has an :ID:
          property with the value label.  You can use
          M-x org-id-copy RET to create a globally unique ID for
          the current entry and copy it to the kill-ring.

When t, insert an hline after every line. When a number N, insert an hline before each headline with level <= N.


When set to t, force column groups to get vertical lines.


When set to a number, don’t capture entries below this level.


When set to t, skip rows where the only non-empty specifier of the column view is ITEM.

The following commands insert or update the dynamic block:

C-c C-x i     (org-insert-columns-dblock)

Insert a dynamic block capturing a column view. You will be prompted for the scope or ID of the view.

C-c C-c  or  C-c C-x C-u     (org-dblock-update)

Update dynamic block at point. The cursor needs to be in the #+BEGIN line of the dynamic block.

C-u C-c C-x C-u     (org-update-all-dblocks)

Update all dynamic blocks (see Dynamic blocks). This is useful if you have several clock table blocks, column-capturing blocks or other dynamic blocks in a buffer.

You can add formulas to the column view table and you may add plotting instructions in front of the table—these will survive an update of the block. If there is a #+TBLFM: after the table, the table will actually be recalculated automatically after an update.

An alternative way to capture and process property values into a table is provided by Eric Schulte’s org-collector.el which is a contributed package66. It provides a general API to collect properties from entries in a certain scope, and arbitrary Lisp expressions to process these values before inserting them into a table or a dynamic block.



Contributed packages are not part of Emacs, but are distributed with the main distribution of Org (visit

Previous: , Up: Column view   [Contents][Index]