{"id":22544367,"url":"https://github.com/hardiksinghbehl/spring-boot-apache-poi","last_synced_at":"2026-03-04T19:32:41.051Z","repository":{"id":38351396,"uuid":"372226468","full_name":"hardikSinghBehl/spring-boot-apache-POI","owner":"hardikSinghBehl","description":"list of reference POCs to work with excel files using apache-POI and spring-boot","archived":false,"fork":false,"pushed_at":"2021-06-13T10:58:37.000Z","size":196,"stargazers_count":12,"open_issues_count":0,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T07:45:09.025Z","etag":null,"topics":["apache-poi","excel-reader","excel-validator","excel-writer","java","open-api-v3","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/hardikSinghBehl.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2021-05-30T13:51:15.000Z","updated_at":"2024-10-08T18:15:11.000Z","dependencies_parsed_at":"2022-08-25T01:31:38.793Z","dependency_job_id":null,"html_url":"https://github.com/hardikSinghBehl/spring-boot-apache-POI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hardikSinghBehl/spring-boot-apache-POI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardikSinghBehl%2Fspring-boot-apache-POI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardikSinghBehl%2Fspring-boot-apache-POI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardikSinghBehl%2Fspring-boot-apache-POI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardikSinghBehl%2Fspring-boot-apache-POI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hardikSinghBehl","download_url":"https://codeload.github.com/hardikSinghBehl/spring-boot-apache-POI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hardikSinghBehl%2Fspring-boot-apache-POI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30090557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T18:31:08.343Z","status":"ssl_error","status_checked_at":"2026-03-04T18:31:07.708Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apache-poi","excel-reader","excel-validator","excel-writer","java","open-api-v3","spring-boot"],"created_at":"2024-12-07T14:07:05.168Z","updated_at":"2026-03-04T19:32:41.007Z","avatar_url":"https://github.com/hardikSinghBehl.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Reference POC projects to work with excel files using Apache POI library and Java Spring-boot\n##### All Proof of concepts are deployed to heroku with their links and sample videos included in their respective README.md file\n\n### Proof of concepts included in this repo (Summary)\n* **Create excel file with single sheet from database records**\n  * Insert 300 dummy employees records in H2 DB on startup using @PostConstruct\n  * endpoint exposed to download created excel sheet from the inserted records at runtime\n* **Create excel file with multiple sheet from database records**\n  * insert super_heroes from different comics in DB at startup (Marvel, Detective Comics)\n  * endpoint exposed to download multiple sheet excel file created at runtime\n  * each sheet contains records of super_heroes from one comic\n  * one sheet for all superheroes from marvel comics, one for DC and so on.\n* **Validate data inside excel sheet for errors and return errors as List.of(String)**\n  * endpoint exposed for user to download excel template (required columns)\n  * user fills in data (rows) to downloaded template\n  * exception is thrown is file extension or format(column names and order) is different\n  * the errors include leaving cells blank, duplicate email-id, wrong email-id, invalid number type etc\n  * each row is validated for errors, if errors exists a list is returned detailing out the error messages along with it's cell position\n* **Validate data inside excel sheet for errors and detail out errors in given excel file itself and return the same**\n  * same as above (first 4)\n  * each cell of each row is validated for errors and if a cell is found to have any error it is colored in RED\n  * a new sheet in the same excel file is created detailing out the error messages (type) and the cell position (row, column)\n  * the above modified file is returned (downloaded automatically to users screen) if errors exists\n* **Read data from excel sheet to database**\n  * endpoint exposing to download required excel sheet template (required columns)\n  * sheet is validated for errors, if no errors are found a unique 6 digit code and the hex of the validated file is generated, the code is returned as response\n  * the code is stored in a cache as key with the validated file's hex being it's value\n  * user hits /employee/bulk-upload API with given code and validated file (error thrown if code is invalid or file other than the validated one is provided)\n  * each row is read from the given sheet and corresponding records are created in the database\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardiksinghbehl%2Fspring-boot-apache-poi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhardiksinghbehl%2Fspring-boot-apache-poi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhardiksinghbehl%2Fspring-boot-apache-poi/lists"}