The following Elisp code modifies the html export backend so that it accepts an additional option HTML_TABLEEL_ORG.
If you set this option to t or yes table cells in table.el-tables are rendered as org-mode strings.
You can copy the code into your init file if the first line of your init file contains the file-local setting lexical-binding: t as ...
Something like this. Call it with M-x my-org-books-to-table RET while the org buffer with your books is active to insert the table at point:
(defun my-org-books-to-table ()
"Generate a list of books and insert as org-table."
(let ((item "books")
;; Map through all headings with item (text of the headline) "books".
If you don't mind using the date command, you can try the code below which I think addresses the four points you describe. It works fine with your example, however AFAICT it's impossible to distinguish between 11-1 and 1-11, so here I'm assuming the month is always two digits when the date is 7 digits long.
(defun fix-date-string (date)
(let ((yy (...
I often use (C-c |) to convert tab separated areas, so you could perhaps simply replace the colon character with a tab and use that.
Or wrap some elisp around (org-table-convert-region BEG0 END0 &optional SEPARATOR)
Initially I wondered if what you really want is to use the powerful (and I mean to learn this for myself still) Emacs Org's Column View, ...
The following approach works for the full subtree describing the key-bindings for all major-modes at once (if the structure of your document is really as you indicated in the question):
narrow to the subtree in question: C-x n s
Type C-<home> to go to the beginning of buffer.
query replace with M-C-% ^\([[:alnum:] ]+\):\( .*\)$ RET |\1|\2| RET.
For the :, a simple M-x query-replace will quickly get you the | between the two columns. For the | at the beginning and end, M-x query-replace-regexp should do:
replace ^ with | for the beginning of the line
replace $ with | for the end of the line
Once you've got all the | inserted, pressing tab anywhere in the table will line up all the columns.