Org-mode mailing list
 help / color / mirror / Atom feed
From: Pankaj Jangid <>
Subject: Transforming table and then exporting as CSV
Date: Thu, 29 Apr 2021 20:31:02 +0530
Message-ID: <> (raw)

I have the following requirement. For this I have written the code that

Bank requires from me a CSV file in this format:

--8<---------------cut here---------------start------------->8---
--8<---------------cut here---------------end--------------->8---

But this doesn’t have names of the people. First column shows the
account numbers. So I have created an org-table like this

--8<---------------cut here---------------start------------->8---
* April 2021
  :TABLE_EXPORT_FILE: enet_apr_2021/0684SAL2904.001.csv
  :TABLE_EXPORT_FORMAT: orgtbl-to-csv
  #+NAME: APR2021
  | NAME                  |     ACCOUNT NO | DR/CR |    AMOUNT | NARRATION |
  |  | 50.........658 | C     |  xxxxx.xx | APR2021   |
  |          | 50.........590 | C     |  xxxxx.xx | APR2021   |
  | Ol........y           | 50.........904 | C     |  xxxxx.xx | APR2021   |
  | Sa........gid         | 06.........965 | C     |  xxxxx.xx | APR2021   |
  | Pa........gid         | 50.........489 | C     |  xxxxx.xx | APR2021   |
  |          | 50.........680 | C     |  xxxxx.xx | APR2021   |
  | Sh........agi         | 50.........357 | C     |  xxxxx.xx | APR2021   |
  | TOTAL                 |                |       | xxxxxx.xx |           |
  #+TBLFM: $4=$4;%.2f
--8<---------------cut here---------------end--------------->8---

I have written below code for the conversion. This code removes the
first column and last row. And then run ‘org-table-export‘. This works

#+begin_src elisp
(require 'org)

(defun enet-export (name)
  (interactive "MTable Name: ")
  (let ((case-fold-search t))
    (goto-char (point-min))
    (if (search-forward-regexp (concat "#\\+NAME: +" name) nil t)
          (let* ((beg (org-table-begin))
                 (end (org-table-end))
                 (txt (buffer-substring-no-properties beg end))
                 (file (org-entry-get (point) "TABLE_EXPORT_FILE"))
                 (format (org-entry-get (point) "TABLE_EXPORT_FORMAT")))
              (insert txt)
              (goto-char (point-min))
              (goto-char (org-table-end))
              (org-entry-put (point) "TABLE_EXPORT_FILE" file)
              (org-entry-put (point) "TABLE_EXPORT_FORMAT" format)
              (make-directory (file-name-directory file) t)
      (message "Not Found"))))

Same org file has multiple tables, so I am asking for “Table Name”. I
want to do two improvements:

1. When asking for table name, I want to offer all the table names in
   the file as completion options.

2. Current table at point as default

3. I want to run the function from command line. Like,

--8<---------------cut here---------------start------------->8---
   emacs --batch -l enet.el --eval="(enet-export \"APR2021\")"
--8<---------------cut here---------------end--------------->8---

   Do I need to change the (interactive...) part in any way to enable


             reply	other threads:[~2021-04-30  4:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-29 15:01 Pankaj Jangid [this message]
2021-05-01 17:41 ` Kyle Meyer
2021-05-03 13:55   ` Pankaj Jangid

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Org-mode mailing list

This inbox may be cloned and mirrored by anyone:

	git clone --mirror list/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 list list/ \
	public-inbox-index list

Example config snippet for mirrors.
Newsgroups are available over NNTP:

AGPL code for this site: git clone