{"id":49326857,"url":"https://github.com/meesho/excel-pojo-mapper","last_synced_at":"2026-04-26T20:32:31.608Z","repository":{"id":43868952,"uuid":"368386808","full_name":"Meesho/excel-pojo-mapper","owner":"Meesho","description":"Excel-Pojo-Mapper is a library to map data kept in excel to list of java objects without writing boilerplate code to read excel \u0026 set values for object fields.","archived":false,"fork":false,"pushed_at":"2022-02-15T08:52:05.000Z","size":63,"stargazers_count":12,"open_issues_count":2,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-01-26T15:12:28.503Z","etag":null,"topics":["apache-poi","converter","epmapper","java","mapping","mapping-tools","microsoft-excel","poi","pojo"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Meesho.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}},"created_at":"2021-05-18T03:13:29.000Z","updated_at":"2023-04-25T14:54:47.000Z","dependencies_parsed_at":"2022-09-05T03:41:53.068Z","dependency_job_id":null,"html_url":"https://github.com/Meesho/excel-pojo-mapper","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Meesho/excel-pojo-mapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meesho%2Fexcel-pojo-mapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meesho%2Fexcel-pojo-mapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meesho%2Fexcel-pojo-mapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meesho%2Fexcel-pojo-mapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Meesho","download_url":"https://codeload.github.com/Meesho/excel-pojo-mapper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Meesho%2Fexcel-pojo-mapper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32312321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"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","converter","epmapper","java","mapping","mapping-tools","microsoft-excel","poi","pojo"],"created_at":"2026-04-26T20:32:30.913Z","updated_at":"2026-04-26T20:32:31.603Z","avatar_url":"https://github.com/Meesho.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eExcel-Pojo-Mapper\u003c/h1\u003e\n  \n*Excel-Pojo-Mapper is a tiny java library to map data kept in excel with java objects without writing boilerplate code to read excel \u0026 create java objects. In a way it lets us convert rows of the specified excel data into Java objects.Rows can be mapped with a key and can be fetched by key name as list of objects.Library provides way to generate standerd excel template to support mapping of complex hierarchy of objects.Epmapper uses Java Reflection \u0026 Apache Poi (the Java API for Microsoft Documents) under the hood to fulfill the mapping process.*\n\n\n## Requirements\n\nJARs are distributed for Java8.\n\n## Get It\n\nIf you are using maven project then create libs folder under project directory. \u003ca id=\"raw-url\" href=\"https://github.com/Meesho/excel-pojo-mapper/releases/download/v1.0/epmapper-1.0-SNAPSHOT.jar\"\u003eDownload jar\u003c/a\u003e \u0026 place it in libs folder.Update dependency in pom.xml.\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.meesho.epmapper\u003c/groupId\u003e\n  \u003cartifactId\u003eexcel-pojo-mapper\u003c/artifactId\u003e\n  \u003cscope\u003esystem\u003c/scope\u003e\n  \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e\n  \u003csystemPath\u003e${project.basedir}/libs/epmapper-1.0-SNAPSHOT.jar\u003c/systemPath\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.apache.poi\u003c/groupId\u003e\n  \u003cartifactId\u003epoi-ooxml\u003c/artifactId\u003e\n  \u003cversion\u003e4.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n   \u003cgroupId\u003eorg.apache.commons\u003c/groupId\u003e\n   \u003cartifactId\u003ecommons-configuration2\u003c/artifactId\u003e\n   \u003cversion\u003e2.7\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.projectlombok\u003c/groupId\u003e\n    \u003cartifactId\u003elombok\u003c/artifactId\u003e\n    \u003cversion\u003e1.18.20\u003c/version\u003e\n\u003c/dependency\u003e\n\n```\n\n## Getting Started\n\n### Build ExcelObjectMapper instance\n\nExcelObjectMapper class provides way to set parameters required for excel template generation \u0026 mapping data with java objects using builder pattern.\n\n```\nExcelObjectMapper mapper = ExcelObjectMapper.\n                           builder().\n                           rootPackage(root_package).\n                           fileLocation(path_of_excel).\n                           sheetName(sheet_name).\n                           build();\n```\n- root_package : Root package in project folder\n- path_of_excel : Path of excel file\n- sheet_name : Name of excel sheet\n\n### Generate Excel Template:\n\nThe Generator class provides a method and it's overloaded version to generate excel template.\n\n1. Create instance of Generator class\n\n```\nGenerator generator = new Generator();\n```\n2. Generate excel template\n\n```\ngenerator.generate(pojo,path);\n          OR\ngenerator.generate(excelObjectMapper,relativeClassPath);\n\n```\n\n- pojo : Fully qualified class name of root pojo.\n- path : Path of excel file and sheet name separated with “:”\n- excelObjectMapper : Instance of ExcelObjectMapper class\n- relativeClassPath : Class path of root pojo class(excluding root package)\n\n**Note: Primitive data types are not supported, we can use wrapper classes.**\n\n### Fill data in excel:\n\nGenerated excel template contains pojo classes \u0026 it's fields which is used for mapping data with java objects.Data for each field in class can be filled below field name.If field is a pojo class or array of pojo class, data has to be filled below class below which it's fields are defined.\n\nFollowing are guideline \u0026 examples to fill data in excel template:\n\n1. The 1st Column in template is blank to keep key to fetch specific data from template. \n2. Don’t remove auto generated header in template as it is used for mapping data with java objects.\n3. Data will be filled in rows from the 2nd column.\n4. Range of columns is specified for each class based on defined fields.Fields are present in the header of template, data has to be kept in respective columns.\n5. Each data in excel will be separated by an empty row.\n\n### Examples:\n\n#### Object Model\n\n```\npublic class Student {\n   private String name;\n   private Integer rollNumber;\n   private Integer age;\n}\n```\n#### Data in excel template:\n\n\u0026nbsp;|Student:1:3|\u0026nbsp;|\u0026nbsp;\n------------|-------------|--------------|----------------\n\u0026nbsp;|name:java.lang.String|rollNumber:java.lang.Integer|age:java.lang.Integer\nkey1|Rahul|1|25\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|Raj|3|30\n\n#### Object Model\n\n```\npublic class Employee {\n\n       private Long employeeId;\n\n       private String name;\n\n       private Boolean single;\n\n       List\u003cString\u003e emails;\n\n       List\u003cInteger\u003e bills;\n}\n```\n#### Data in excel template:\n\n\u0026nbsp;|Employee:1:8|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\n------------| -------------|--------------|----------------|-----------|---------------|-----------------\n\u0026nbsp;|employeeId:java.lang.Long|name:java.lang.String|single:java.lang.Boolean|emails:[L[Ljava.lang.String|bills:[L[Ljava.lang.Integer\nkey1|1001|Rahul|TRUE|rahul@gmail.com,abc@gmail.com|112,113\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|1002|Raj|FALSE|raj@gmail.com,kumar@gmail.com|116,117\n\n#### Object Model\n\n```\npublic class Student {\n    private String name;\n    private Integer rollNumber;\n    private StudentAddress address;\n}\n\npublic class StudentAddress {\n    private String city;\n    private String state;\n    private Long pinCode;\n}\n\n```\n#### Data in excel template:\n\n\u0026nbsp;|Employee:1:8|\u0026nbsp;|StudentAddress:5:7|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\n------|------------|------|------------------|------|------|-------\n\u0026nbsp;|name:java.lang.String|rollNumber:java.lang.Integer|StudentAddress|city:java.lang.String|state:java.lang.String|pinCode:java.lang.Long\nkey1|Rahul|1|\u0026nbsp;|Bangalore|Karnataka|560061\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|Raj|2|\u0026nbsp;|Bangalore|Karnataka|560063\n\n#### Object Model\n\n```\npublic class Department {\n    private String name;\n    private List\u003cEmployee\u003e employees;\n}\n\npublic class Employee {\n\n       private Long employeeId;\n\n       private String name;\n}\n\n```\n\n#### Data in excel template:\n\n\u0026nbsp;|Department:1:2|\u0026nbsp;|Employee:3:4|\u0026nbsp;\n------|------------|------|------------------|------\n\u0026nbsp;|name:java.lang.String|employees:[LEmployee|employeeId:java.lang.Long|name:java.lang.String\nkey1|IT|\u0026nbsp;|110|Rahul\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|111|Raj\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|HR|\u0026nbsp;|112|Amar\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|113|Prakash\n\n#### Object Model\n\n```\npublic class Department {\n    private String name;\n    private Team team;\n}\n\npublic class Team {\n    private String name;\n    private List\u003cEmployee\u003e employees;\n}\n\npublic class Employee {\n\n        private Long employeeId;\n\n        private String name;\n}\n```\n\n#### Data in excel template:\n\n\u0026nbsp;|Department:1:2|\u0026nbsp;|Team:3:4|\u0026nbsp;|Employee:5:6|\u0026nbsp;\n------|------------|------|------------------|-----------|------|-----\n\u0026nbsp;|name:java.lang.String|team:Team|name:java.lang.String|employees:[LEmployee|employeeId:java.lang.Long|name:java.lang.String\nkey1|IT|\u0026nbsp;|Dev|\u0026nbsp;|110|Rahul\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|111|Raj\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|HR|\u0026nbsp;|Recruitment|\u0026nbsp;|114|Suraj\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|115|Ram\n\n#### Object Model\n\n```\npublic class Department {\n    private String name;\n    private List\u003cTeam\u003e teams;\n}\n\npublic class Team {\n    private String name;\n    private List\u003cEmployee\u003e employees;\n}\n\npublic class Employee {\n\n        private Long employeeId;\n\n        private String name;\n\n        @Override\n        public String toString() {\n                final StringBuilder sb = new StringBuilder(\"Employee{\");\n                sb.append(\"employeeId=\").append(employeeId);\n                sb.append(\", name='\").append(name).append('\\'');\n                sb.append('}');\n                return sb.toString();\n        }\n}\n```\n#### Data in excel template:\n\u0026nbsp;|Department:1:2|\u0026nbsp;|Team:3:4|\u0026nbsp;|Employee:5:6|\u0026nbsp;\n------|------------|------|------------------|-----------|------|-----\n\u0026nbsp;|name:java.lang.String|teams:[LTeam|name:java.lang.String|employees:[LEmployee|employeeId:java.lang.Long|name:java.lang.String\nkey1|IT|\u0026nbsp;|Dev|\u0026nbsp;|110|Rahul\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|QA|\u0026nbsp;|111|Raj\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|END|END\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|112|Amar\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|113|Prakash\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;\nkey2|HR|\u0026nbsp;|Recruitment|\u0026nbsp;|114|Suraj\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|Support|\u0026nbsp;|115|Ram\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|END|END\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|116|Shyam\n\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|\u0026nbsp;|117|Akash\n\n## Map data with list of java objects:\n\nExcelObjectMapperHelper class provides methods to pass instance of ExcelObjectMapper and fetch list of java objects by key.\n\n```\nExcelObjectMapperHelper.setObjectMapper(excelObjectMapper);\nList\u003cObject\u003e data = ExcelObjectMapperHelper.getData(key);\n\n```\n\n- excelObjectMapper : Instance of ExcelObjectMapper\n- key : Name or key mapped with rows of data\n- data : List of java objects corresponding to rows in excel\n\n## Write to us:\n\nIn case of any suggestion/feedback/issues, send email to ashish.k@meesho.com.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeesho%2Fexcel-pojo-mapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeesho%2Fexcel-pojo-mapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeesho%2Fexcel-pojo-mapper/lists"}