{"id":17028013,"url":"https://github.com/orgtre/csvorg","last_synced_at":"2025-03-22T19:43:38.297Z","repository":{"id":240252626,"uuid":"586239633","full_name":"orgtre/csvorg","owner":"orgtre","description":"Export/import Emacs Org mode entries to/from csv-files","archived":false,"fork":false,"pushed_at":"2023-01-08T18:39:16.000Z","size":7,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-27T23:42:59.549Z","etag":null,"topics":["csv","csv-export","csv-import","emacs","org-mode"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orgtre.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-07T12:46:27.000Z","updated_at":"2025-01-23T22:34:57.000Z","dependencies_parsed_at":"2024-05-17T16:09:53.006Z","dependency_job_id":"536792e3-a765-411c-863e-bb88b6df8afc","html_url":"https://github.com/orgtre/csvorg","commit_stats":null,"previous_names":["orgtre/csvorg"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orgtre%2Fcsvorg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orgtre%2Fcsvorg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orgtre%2Fcsvorg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orgtre%2Fcsvorg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orgtre","download_url":"https://codeload.github.com/orgtre/csvorg/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245013956,"owners_count":20547177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","csv-export","csv-import","emacs","org-mode"],"created_at":"2024-10-14T07:51:56.658Z","updated_at":"2025-03-22T19:43:38.276Z","avatar_url":"https://github.com/orgtre.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"* csvorg\n\nThis [[https://www.gnu.org/savannah-checkouts/gnu/emacs/emacs.html][Emacs]] package lets you convert a set of [[https://orgmode.org][org-mode]] entries to a csv-file and the other way around. It extends and complements similar functionality provided by a combination of the built-in [[https://orgmode.org/worg/org-contrib/org-collector.html][org-collector]] and [[https://orgmode.org/manual/Built_002din-Table-Editor.html][org-table]], or the external package [[https://github.com/jplindstrom/emacs-org-transform-tree-table][emacs-org-transform-tree-table]]. The [[https://github.com/mhayashi1120/Emacs-pcsv][pcsv]] package is used as csv-parser when importing and =org-map-entries= is used to collect entries when exporting.\n\n\n** Usage\n\nTwo commands are provided: =csvorg-export= and =csvorg-import=. They can be used interactively, but to access all options non-interactive use is required. Their docstring explains how to use them.\n\n\n*** Example\n\n#+begin_src elisp\n  (csvorg-export\n   \"csvorg-test-from-org.csv\" nil\n   '(\"ITEM\" \"prop1\" \"prop0\" \"TODO\" \"TAGS\" \"child1\")\n   \"LEVEL=2\" '(\"csvorg-test.org\") t t)\n#+end_src\n\nfor a file /csvorg-test.org/ with content:\n\n#+begin_src\n* entries\n  :PROPERTIES:\n  :prop0: value of prop0\n  :END:\n\n** head1\n   :PROPERTIES:\n   :prop1: value of head1prop1\n   :END:\n\n*​** child1\n\n    content of head1child1\n\n\n** DONE head2 :tag1:tag2:\n   :PROPERTIES:\n   :prop1: value of head2prop1, with comma\n   :prop2: value of head2prop2\n   :END:\n\n*​** child1\n\n    content of head2child1, with comma\n\n    and linebreaks\n\n\n*​** child2\n\n    content of head2child2\n#+end_src\n\nwill create the file /csvorg-test-from-org.csv/ with content:\n\n#+begin_src\nITEM , prop1                            , prop0         , TODO, TAGS       , child1\nhead1, value of head1prop1              , value of prop0,     ,            , content of head1child1\nhead2, \"value of head2prop1, with comma\", value of prop0, DONE, :tag1:tag2:, \"content of head2child1, with comma\\n\\nand linebreaks\"\n#+end_src\n\nwhere the spaces between fields are only inserted here for display purposes.\n\n#+begin_src elisp\n  (csvorg-import\n   \"csvorg-test-from-org.csv\"\n   \"csvorg-test-from-org-and-back.org\"\n   nil '(\"prop1\" \"prop0\" \"TODO\" \"TAGS\")\n   '(\"child1\") \"entries\")\n#+end_src\n\nnow imports this csv-file into org by creating the file /csvorg-test-from-org-and-back.org/ with contents:\n\n#+begin_src \n* entries\n\n** head1\n   :PROPERTIES:\n   :prop1: value of head1prop1\n   :prop0: value of prop0\n   :END:\n\n*​** child1\n\n    content of head1child1\n\n\n** head2\n   :PROPERTIES:\n   :prop1: value of head2prop1, with comma\n   :prop0: value of prop0\n   :'TODO: DONE\n   :'TAGS: :tag1:tag2:\n   :END:\n\n*​** child1\n\n    content of head2child1, with comma\n\n    and linebreaks\n#+end_src\n\nNote the following:\n- All Org entries user properties, special properties, and children (subheadings with contents) can be exported.\n- To determine entries for export, the flexible [[https://orgmode.org/manual/Matching-tags-and-properties.html][match]] and scope arguments of =org-map-entries= can be used.\n- On import the Org entry heading can be constructed using an arbitrary function of the corresponding csv row and the column names, with sensible defaults.\n- Hooks are provided for transforming column names on import, and field values on import and export, again with sensible defaults.\n- If all entries user properties and children are exported, no special properties are used except ITEM, property inheritance is disabled, entries contain no extra leading or trailing whitespace, and all exported entries are children of the same parent, then one gets back the same thing after an export and import.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forgtre%2Fcsvorg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forgtre%2Fcsvorg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forgtre%2Fcsvorg/lists"}