{"id":19514175,"url":"https://github.com/bhftbootcamp/openxl.jl","last_synced_at":"2025-10-29T21:34:53.914Z","repository":{"id":247475808,"uuid":"825946925","full_name":"bhftbootcamp/OpenXL.jl","owner":"bhftbootcamp","description":"Lightweight Julia package for reading Excel (.xlsx, .xlsm) files","archived":false,"fork":false,"pushed_at":"2024-11-29T07:01:43.000Z","size":1757,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-25T21:11:23.322Z","etag":null,"topics":["excel","openxl","xlsx"],"latest_commit_sha":null,"homepage":"","language":"Julia","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/bhftbootcamp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T20:13:21.000Z","updated_at":"2025-02-20T22:35:56.000Z","dependencies_parsed_at":"2024-08-01T18:27:24.796Z","dependency_job_id":"8739aa41-6657-4d8d-b9ff-6616ea0a8de6","html_url":"https://github.com/bhftbootcamp/OpenXL.jl","commit_stats":null,"previous_names":["bhftbootcamp/openxl.jl"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhftbootcamp%2FOpenXL.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhftbootcamp%2FOpenXL.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhftbootcamp%2FOpenXL.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhftbootcamp%2FOpenXL.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhftbootcamp","download_url":"https://codeload.github.com/bhftbootcamp/OpenXL.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240762527,"owners_count":19853497,"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":["excel","openxl","xlsx"],"created_at":"2024-11-10T23:35:18.664Z","updated_at":"2025-10-29T21:34:53.802Z","avatar_url":"https://github.com/bhftbootcamp.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenXL.jl\n\n[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://bhftbootcamp.github.io/OpenXL.jl/stable/)\n[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://bhftbootcamp.github.io/OpenXL.jl/dev/)\n[![Build Status](https://github.com/bhftbootcamp/OpenXL.jl/actions/workflows/CI.yml/badge.svg?branch=master)](https://github.com/bhftbootcamp/OpenXL.jl/actions/workflows/CI.yml?query=branch%3Amaster)\n[![Coverage](https://codecov.io/gh/bhftbootcamp/OpenXL.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/bhftbootcamp/OpenXL.jl)\n[![Registry](https://img.shields.io/badge/registry-General-4063d8)](https://github.com/JuliaRegistries/General)\n\nOpenXL is a lightweight package designed to easily read Excel 2010 xlsx/xlsm/xltx/xltm files.\n\n## Installation\n\nTo install OpenXL, simply use the Julia package manager:\n\n```julia\n] add OpenXL\n```\n\n## Usage\n\nHere is how you can use the basic interface for parsing and printing XL tables:\n\n```julia\nusing OpenXL\n\njulia\u003e raw_xlsx = read(\"assets/ticker24h_sample_data.xlsx\")\n266033-element Vector{UInt8}:\n 0x50\n 0x4b\n    ⋮\n 0x00\n\njulia\u003e xlsx = xl_parse(raw_xlsx)\n1-element XLWorkbook:\n 2682x19 XLSheet(\"Ticker24h\")\n\njulia\u003e sheet = xlsx[\"Ticker24h\"]\n2682x19 XLSheet(\"Ticker24h\")\n Sheet │ A        B         C        ⋯  Q         R            S                 \n───────┼────────────────────────────────────────────────────────────────────────\n     1 │ symbol   askPrice  askQty   ⋯  count     volume       weightedAvgPrice  \n     2 │ ETHBTC   0.05296   8.1061   ⋯  473424.0  86904.9028   0.05347515        \n     3 │ LTCBTC   0.001072  308.762  ⋯  43966.0   130937.575   0.00110825        \n     4 │ BNBBTC   0.008633  1.036    ⋯  277360.0  99484.88     0.00883183        \n     ⋮ │  ⋮        ⋮         ⋮        ⋯   ⋮         ⋮            ⋮                 \n  2681 │ ZKUSDC   0.1386    3612.7   ⋯  1572.0    1.3895516e6  0.15005404        \n  2682 │ ZROUSDC  2.925     437.83   ⋯  7957.0    356187.29    3.07800556\n```\n\nYou can slice a table using address indexing and then convert the data to a row representation:\n\n```julia\nusing OpenXL\n\njulia\u003e xlsx = xl_parse(read(\"assets/ticker24h_sample_data.xlsx\"))\n1-element XLWorkbook:\n 2682x19 XLSheet(\"Ticker24h\")\n\njulia\u003e sheet = xlsx[\"Ticker24h\"][\"A1:E\"]\n2682x5 SubXLSheet(\"Ticker24h\")\n Sheet │ A        B         C        D         E         \n───────┼────────────────────────────────────────────────\n     1 │ symbol   askPrice  askQty   bidPrice  bidQty    \n     2 │ ETHBTC   0.05296   8.1061   0.05295   50.5655   \n     3 │ LTCBTC   0.001072  308.762  0.001071  1433.702  \n     4 │ BNBBTC   0.008633  1.036    0.008632  8.139     \n     ⋮ │  ⋮        ⋮          ⋮        ⋮         ⋮         \n  2681 │ ZKUSDC   0.1386    3612.7   0.138     11976.9   \n  2682 │ ZROUSDC  2.925     437.83   2.922     353.73  \n\njulia\u003e xl_rowtable(sheet; header = true)\n2681-element Vector{NamedTuple{(:symbol, :askPrice, :askQty, :bidPrice, :bidQty)}}:\n (symbol = \"ETHBTC\", askPrice = 0.05296, askQty = 8.1061, ...)\n (symbol = \"LTCBTC\", askPrice = 0.001072, askQty = 308.762, ...)\n (symbol = \"BNBBTC\", askPrice = 0.008633, askQty = 1.036, ...)\n (symbol = \"NEOBTC\", askPrice = 0.0001604, askQty = 6.52, ...)\n ⋮\n (symbol = \"ZKUSDC\", askPrice = 0.1386, askQty = 3612.7, ...)\n (symbol = \"ZROUSDC\", askPrice = 2.925, askQty = 437.83, ...)\n```\n\nTable slices can be obtained in the same way as with a regular matrix, which can then also be converted to a column representation:\n\n```julia\nusing OpenXL\n\njulia\u003e xlsx = xl_parse(read(\"assets/ticker24h_sample_data.xlsx\"))\n1-element XLWorkbook:\n 2682x19 XLSheet(\"Ticker24h\")\n\njulia\u003e sheet = xlsx[\"Ticker24h\"][2:500, 7:10]\n499x4 SubXLSheet(\"Ticker24h\")\n Sheet │ A          B          C          D          \n───────┼────────────────────────────────────────────\n     1 │ 0.05477    0.05501    0.05216    0.05295    \n     2 │ 0.001197   0.001213   0.001029   0.001071   \n     3 │ 0.009138   0.009208   0.008422   0.008632   \n     4 │ 0.000181   0.0001832  0.000154   0.0001603  \n     ⋮ │  ⋮          ⋮           ⋮          ⋮           \n   498 │ 0.000968   0.00098    0.00091    0.000932   \n   499 │ 8.86e-6    8.98e-6    7.85e-6    8.06e-6   \n\njulia\u003e xl_columntable(sheet; alt_keys = Dict(\"A\" =\u003e \"O\", \"B\" =\u003e \"H\", \"C\" =\u003e \"L\", \"D\" =\u003e \"C\"))\n(\n  O = [0.05477, 0.001197  …  0.000968, 8.86e-6],\n  H = [0.05501, 0.001213  …  0.00098, 8.98e-6],\n  L = [0.05216, 0.001029  …  0.00091, 7.85e-6],\n  C = [0.05295, 0.001071  …  0.000932, 8.06e-6],\n)\n```\n\nIf necessary, you can make a `DataFrame` object using a row representation of the table.\n\n```julia\nusing OpenXL\nusing DataFrames\n\njulia\u003e xlsx = xl_parse(read(\"assets/ticker24h_sample_data.xlsx\"))\n1-element XLWorkbook:\n 2682x19 XLSheet(\"Ticker24h\")\n\njulia\u003e DataFrame(eachrow(xlsx[\"Ticker24h\"], header = true))\n2681×19 DataFrame\n  Row │ symbol    askPrice    askQty      bidPrice    bidQty      lastQty    openPrice  ⋯\n      │ String    Float64     Float64     Float64     Float64     Float64    Float64    ⋯\n──────┼──────────────────────────────────────────────────────────────────────────────────\n    1 │ ETHBTC     0.05296        8.1061   0.05295       50.5655      1.15     0.05477  ⋯\n    2 │ LTCBTC     0.001072     308.762    0.001071    1433.7        25.421    0.001197\n    3 │ BNBBTC     0.008633       1.036    0.008632       8.139       0.013    0.009138\n    4 │ NEOBTC     0.0001604      6.52     0.0001601    318.15       33.69     0.000181\n    5 │ QTUMETH    0.000696     100.3      0.000692     792.4       157.3      0.000738 ⋯\n  ⋮   │    ⋮          ⋮           ⋮           ⋮           ⋮           ⋮           ⋮     ⋱\n 2678 │ BAKETRY    6.72        3641.0      6.71        3071.0     11350.0      8.79\n 2679 │ WIFBRL     9.59          15.4      8.81        1595.9         4.5     10.05\n 2680 │ ZKUSDC     0.1386      3612.7      0.138      11976.9       812.0      0.1628\n 2681 │ ZROUSDC    2.925        437.83     2.922        353.73       16.08     3.24     ⋯\n                                                         13 columns and 2672 rows omitted\n```\n\n## Contributing\n\nContributions to OpenXL are welcome! If you encounter a bug, have a feature request, or would like to contribute code, please open an issue or a pull request on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhftbootcamp%2Fopenxl.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhftbootcamp%2Fopenxl.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhftbootcamp%2Fopenxl.jl/lists"}