{"id":31274178,"url":"https://github.com/mathnya/umya-spreadsheet","last_synced_at":"2025-09-23T22:41:48.986Z","repository":{"id":39987107,"uuid":"289217280","full_name":"MathNya/umya-spreadsheet","owner":"MathNya","description":"A pure rust library for reading and writing spreadsheet files","archived":false,"fork":false,"pushed_at":"2025-09-08T02:17:09.000Z","size":14142,"stargazers_count":394,"open_issues_count":57,"forks_count":61,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-19T06:07:58.683Z","etag":null,"topics":["excel","rust","spreadsheet","xlsx"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/MathNya.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"MathNya","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2020-08-21T08:21:32.000Z","updated_at":"2025-09-19T02:53:18.000Z","dependencies_parsed_at":"2022-08-09T15:48:14.089Z","dependency_job_id":"543644c9-6619-49c7-a810-3586bf8f3e03","html_url":"https://github.com/MathNya/umya-spreadsheet","commit_stats":{"total_commits":184,"total_committers":18,"mean_commits":"10.222222222222221","dds":0.3913043478260869,"last_synced_commit":"0031ffc403ee77e16f46cda7a7753b3dcf4a1b44"},"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/MathNya/umya-spreadsheet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathNya%2Fumya-spreadsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathNya%2Fumya-spreadsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathNya%2Fumya-spreadsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathNya%2Fumya-spreadsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MathNya","download_url":"https://codeload.github.com/MathNya/umya-spreadsheet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathNya%2Fumya-spreadsheet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276662401,"owners_count":25682029,"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","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","rust","spreadsheet","xlsx"],"created_at":"2025-09-23T22:41:46.989Z","updated_at":"2025-09-23T22:41:48.978Z","avatar_url":"https://github.com/MathNya.png","language":"Rust","funding_links":["https://github.com/sponsors/MathNya"],"categories":[],"sub_categories":[],"readme":"# umya-spreadsheet\n![Result Image](./images/title.png)\n\n[![Crates.io](https://img.shields.io/crates/v/umya-spreadsheet)](https://crates.io/crates/umya-spreadsheet)\n![Github CI](https://github.com/MathNya/umya-spreadsheet/actions/workflows/rust.yml/badge.svg)\n[![Crates.io](https://img.shields.io/crates/l/umya-spreadsheet)](https://github.com/MathNya/umya-spreadsheet#license)\n[![GitHub Sponsor](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026color=ff69b4)](https://github.com/sponsors/MathNya)\n\n## Description\n**umya-spreadsheet** is a library written in pure Rust to read and write xlsx file.\n\n## Chatting\n### The chat will be closed.\n(Maybe I didn't set it up right, but it's because I no longer get notifications when new messages come in and I don't notice them anymore.)\n\nPlease mention in issues if you have any questions.\n\n## Update details\n### ver 2.3.2\n#### Bug Fixed #290,#291\n\n## Usage\n### Installation\nAdd the following code to Cargo.toml\n```toml\n[dependencies]\numya-spreadsheet = \"2.3.3\"\n\n# WebAssembly support\numya-spreadsheet = { version = \"2.3.3\", features = [\"js\"] }\n```\n\nAdd the following code to main.rs\n```rust\nextern crate umya_spreadsheet;\n```\n### Read file\n```rust\nlet path = std::path::Path::new(\"./tests/test_files/aaa.xlsx\");\nlet mut book = umya_spreadsheet::reader::xlsx::read(path).unwrap();\n```\n### Read file (Lazy)\nDelays the loading of the worksheet until it is needed.  \nWhen loading a file with a large amount of data, response improvement can be expected.\n```rust\nlet path = std::path::Path::new(\"./tests/test_files/aaa.xlsx\");\nlet mut book = umya_spreadsheet::reader::xlsx::lazy_read(path).unwrap();\n```\n### New file\n```rust\nlet mut book = umya_spreadsheet::new_file();\n```\n### Write file\n```rust\nlet path = std::path::Path::new(\"./tests/result_files/bbb.xlsx\");\nlet _ = umya_spreadsheet::writer::xlsx::write(\u0026book, path);\n```\n### Write file with password\n```rust\nlet path = std::path::Path::new(\"./tests/result_files/bbb.xlsx\");\nlet _ = umya_spreadsheet::writer::xlsx::write_with_password(\u0026book, path, \"password\");\n```\n```rust\nlet from_path = std::path::Path::new(\"./tests/test_files/aaa.xlsx\");\nlet to_path = std::path::Path::new(\"./tests/result_files/bbb.xlsx\");\nlet _ = umya_spreadsheet::writer::xlsx::set_password(\u0026from_path, \u0026to_path, \"password\");\n```\n### Read Value\n```rust\nlet mut book = umya_spreadsheet::new_file();\nbook.get_sheet_by_name(\"Sheet1\").unwrap().get_cell(\"A1\").get_value();\nbook.get_sheet_by_name(\"Sheet1\").unwrap().get_cell((1, 1)).get_value();\nbook.get_sheet_by_name(\"Sheet1\").unwrap().get_cell((\u00261, \u00261)).get_value();\nbook.get_sheet_mut(0).unwrap().get_cell((\u00261, \u00261)).get_value();\n```\n### Change Value\n```rust\nlet mut book = umya_spreadsheet::new_file();\nbook.get_sheet_by_name_mut(\"Sheet1\").unwrap().get_cell_mut(\"A1\").set_value(\"TEST1\");\nbook.get_sheet_mut(0).unwrap().get_cell_mut(\"A1\").set_value(\"TEST2\");\n```\n### Move Values\n```rust\nlet range = \"A1:A3\";\nlet row = 10;\nlet column = 2;\nbook.get_sheet_by_name_mut(\"Sheet1\").unwrap().move_range(range, \u0026row, \u0026column);\n```\n### Change Style\n```rust\nlet mut book = umya_spreadsheet::new_file();\nlet mut style = book.get_sheet_by_name_mut(\"Sheet1\").unwrap().get_style_mut(\"A1\");\n// fill color on red.\nstyle.set_background_color(umya_spreadsheet::Color::COLOR_RED);\n```\n### New Chart\n```rust\nlet mut book = umya_spreadsheet::new_file();\n// Add Chart\nlet mut from_marker = umya_spreadsheet::structs::drawing::spreadsheet::MarkerType::default();\nfrom_marker.set_coordinate(\"C1\");\nlet mut to_marker = umya_spreadsheet::structs::drawing::spreadsheet::MarkerType::default();\nto_marker.set_coordinate(\"D11\");\nlet area_chart_series_list = vec![\n    \"Sheet1!$A$1:$A$10\",\n    \"Sheet1!$B$1:$B$10\",\n];\nlet mut chart = umya_spreadsheet::structs::Chart::default();\nchart.new_chart(\n    umya_spreadsheet::structs::ChartType::LineChart,\n    from_marker,\n    to_marker,\n    area_chart_series_list,\n);\nbook.get_sheet_by_name_mut(\"Sheet1\").unwrap()\n    .add_chart(chart);\n```\n\n### Struct \n\nPass the book as a ```Spreadsheet``` to modify it in other functions. \n\n```rust\n\nlet mut book = umya_spreadsheet::new_file();\nlet _ = book.new_sheet(\"Sheet2\");\nupdate_excel(\u0026mut book);\n\nfn update_excel(book: \u0026mut Spreadsheet) {\n   book.get_sheet_by_name_mut(\"Sheet2\").unwrap().get_cell_mut(\"A1\").set_value(\"Test\"); \n}\n```\n\nSee the next chapter for implementation status and more detailed usage.\n\n## Support Status\n| Function | detail | example |\n| --- | --- | --- |\n| file reader | xlsx, xlsm | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/reader/xlsx/fn.read.html). |\n| file lazy_reader | xlsx, xlsm | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/reader/xlsx/fn.lazy_read.html). |\n| file writer | xlsx, xlsm | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/writer/xlsx/fn.write.html). |\n|  | csv | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/writer/csv/fn.write.html). |\n| file writer with password | xlsx, xlsm | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/writer/xlsx/fn.write_with_password.html). |\n| worksheet | read, new, copy | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/). |\n| cell value | read, edit, formated value. | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/). |\n| cell style | read, edit | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/structs/struct.Style.html).  |\n| columns | read, edit, auto width | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/structs/struct.Column.html).  |\n| rows | read, edit |  |\n| charts | read, edit | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/structs/struct.Chart.html).  |\n| drawings | read, edit(Still might be inconvenient.) |  |\n| images | read, edit | [**here**](https://docs.rs/umya-spreadsheet/latest/umya_spreadsheet/structs/struct.Image.html). |\n| ole objects | read, edit(Still might be inconvenient.) |  |\n\n## License\nMIT\n\n## Contributing\n\nContributions by way of pull requests are welcome!  Please make sure your code uses:\n\n* `cargo fmt` for formatting\n* [clippy](https://github.com/rust-lang/rust-clippy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathnya%2Fumya-spreadsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathnya%2Fumya-spreadsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathnya%2Fumya-spreadsheet/lists"}