Previous: Using column view, Up: Column view

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 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 package1. 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.


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