{"id":16870228,"url":"https://github.com/ringabout/xlsx","last_synced_at":"2025-10-08T10:24:41.311Z","repository":{"id":50947815,"uuid":"227361525","full_name":"ringabout/xlsx","owner":"ringabout","description":"Parse excel written in Nim.","archived":false,"fork":false,"pushed_at":"2024-06-11T04:21:48.000Z","size":232,"stargazers_count":61,"open_issues_count":5,"forks_count":12,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-14T15:03:11.087Z","etag":null,"topics":["hackertoberfest"],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ringabout.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2019-12-11T12:31:47.000Z","updated_at":"2024-09-25T07:29:51.000Z","dependencies_parsed_at":"2024-06-11T05:32:21.706Z","dependency_job_id":"26bc2662-c49d-4420-81fb-93b76f33f330","html_url":"https://github.com/ringabout/xlsx","commit_stats":{"total_commits":154,"total_committers":11,"mean_commits":14.0,"dds":0.2272727272727273,"last_synced_commit":"717b828fc5e6913d19facdceeb7da39bd575300f"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringabout%2Fxlsx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringabout%2Fxlsx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringabout%2Fxlsx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringabout%2Fxlsx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ringabout","download_url":"https://codeload.github.com/ringabout/xlsx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244290468,"owners_count":20429364,"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":["hackertoberfest"],"created_at":"2024-10-13T15:03:17.978Z","updated_at":"2025-10-08T10:24:36.263Z","avatar_url":"https://github.com/ringabout.png","language":"Nim","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://dev.azure.com/xzsflywind/xlsx/_apis/build/status/xflywind.xlsx?branchName=master)](https://dev.azure.com/xzsflywind/xlsx/_build/latest?definitionId=2\u0026branchName=master)\r\n\r\n# xlsx [![nimble](https://raw.githubusercontent.com/yglukhov/nimble-tag/master/nimble.png)](https://github.com/yglukhov/nimble-tag)\r\nParse xlsx written in Nim.[WIP]\r\n\r\n### Docs\r\n\r\nDocs in https://ringabout.github.io/xlsx/utils.html\r\n\r\n### Usage\r\n\r\n#### Parse Excel without header.\r\n\r\n```nim\r\nimport xlsx\r\n\r\n\r\nlet\r\n  data = parseExcel(\"tests/test.xlsx\")\r\n  sheetName = \"Sheet2\"\r\necho data[sheetName]\r\n```\r\n\r\noutput:\r\n\r\n```text\r\n+----------+----------+----------+\r\n|name      |grade     |age       |\r\n|simon     |          |14        |\r\n|tom       |87        |34        |\r\n+----------+----------+----------+\r\n```\r\n\r\n#### Parse Excel with header.\r\n\r\n```nim\r\nimport xlsx\r\n\r\n\r\nlet\r\n  data = parseExcel(\"tests/test.xlsx\", header = true)\r\n  sheetName = \"Sheet2\"\r\necho data[sheetName]\r\n```\r\n\r\noutput:\r\n\r\n```text\r\n+----------+----------+----------+\r\n|name      |grade     |age       |\r\n+----------+----------+----------+\r\n|simon     |          |14        |\r\n|tom       |87        |34        |\r\n+----------+----------+----------+\r\n```\r\n\r\n#### Parse Excel and skip header for data processing.\r\n\r\n```nim\r\nimport xlsx\r\n\r\n\r\nlet\r\n  data = parseExcel(\"tests/test.xlsx\", skipHeaders = true)\r\n  sheetName = \"Sheet2\"\r\necho data[sheetName]\r\n```\r\n\r\noutput:\r\n\r\n```text\r\n+----------+----------+----------+\r\n|simon     |          |14        |\r\n|tom       |87        |34        |\r\n+----------+----------+----------+\r\n```\r\n\r\n#### Convert to Csv\r\n\r\n```nim\r\nimport xlsx\r\n\r\n\r\nlet sheetName = \"Sheet2\"\r\nlet data = parseExcel(\"tests/test.xlsx\")\r\ndata[sheetName].toCsv(\"tests/test.csv\", sep = \",\")\r\n```\r\n\r\noutput:\r\n\r\n```text\r\nname,grade,age\r\nsimon,,14\r\ntom,87,34\r\n```\r\n\r\n#### Loop through rows:\r\n```nim\r\nimport xlsx\r\n\r\nlet sheetName = \"Sheet2\"\r\nlet data = parseExcel(\"tests/test.xlsx\")\r\nlet rows = data[sheetName].toSeq(false)\r\nfor row in rows:\r\n  echo row\r\n```\r\n\r\noutput:\r\n\r\n```text\r\n@[\"name\", \"grade\", \"age\"]\r\n@[\"simon\", \"\", \"14\"]\r\n@[\"tom\", \"87\", \"34\"]\r\n```\r\n\r\n#### Loop through rows and skip headers:\r\n```nim\r\nimport xlsx\r\n\r\nlet sheetName = \"Sheet2\"\r\nlet data = parseExcel(\"tests/test.xlsx\")\r\nlet rows = data[sheetName].toSeq(true)\r\nfor row in rows:\r\n  echo \"Name is: \" \u0026 row[0]\r\n```\r\n\r\noutput:\r\n\r\n```text\r\nName is: simon\r\nName is: tom\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringabout%2Fxlsx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fringabout%2Fxlsx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringabout%2Fxlsx/lists"}