ฉันสามารถส่งออกตารางเฉพาะในไฟล์องค์กรไปยัง csv จากบรรทัดคำสั่งได้หรือไม่


19

ฉันมีไฟล์องค์กรที่มีหลายตาราง

$ cat ~/foo.org
#+Title: hello world

* section 1

lorem ipsum

#+TBLNAME: first-table
| i      | want | to    |
| export | this | table |

#+TBLNAME: second-table
| this | table | is        |
| not  | as    | important |

ไฟล์นี้มีการปรับปรุงเป็นประจำ ฉันมี Perl สคริปต์ที่แยกวิเคราะห์csvไฟล์ที่ได้รับจากการออกบนM-x org-table-export first-tableฉันต้องการส่งออกfirst-tableไปยัง csv จากบรรทัดคำสั่งดังนั้นฉันไม่ต้องทำด้วยตนเองทุกครั้ง เป็นไปได้ไหม


1
เพื่อให้ได้เนื้อหาของตารางในไฟล์ Org ที่คุณสามารถทำได้(org-babel-ref-resolve "first-table")- สิ่งนี้จะให้ตารางเป็นรายการจากนั้นเรียกorgtbl-to-csvรายการนั้น ดูเอกสารประกอบของorgtbl-to-csvสำหรับข้อโต้แย้งเพิ่มเติม จากนั้นคุณสามารถเรียกใช้ Emacs ในโหมดแบตช์เพื่อเรียกใช้ฟังก์ชันของคุณโดยใช้--evalหรือ-fตัวเลือก
wvxvw

คำตอบ:


24

คุณสามารถมองหาตารางและใช้org-table-exportในการส่งออก คุณสามารถใส่ฟังก์ชั่นในไฟล์โหลดและส่งออกแบทช์ บางสิ่งเช่นนี้อาจจะ:

setup.el:

(require 'org)

(defun my-tbl-export (name)
  "Search for table named `NAME` and export."
  (interactive "s")
  (show-all)
  (let ((case-fold-search t))
    (if (search-forward-regexp (concat "#\\+NAME: +" name) nil t)
    (progn
      (next-line)
      (org-table-export (format "%s.csv" name) "orgtbl-to-csv")))))

จากนั้นด้วยไฟล์ตัวอย่างของคุณคุณสามารถส่งออกแบบแบทช์ดังนี้:

$ emacs --batch foo.org -l setup.el --eval '(my-tbl-export "first-table")'

การค้นหาตารางของฉันค่อนข้างหยาบ แต่ก็ใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.