diff --git a/README.adoc b/README.adoc index 1af2a29..30a4fb3 100644 --- a/README.adoc +++ b/README.adoc @@ -1,5 +1,5 @@ = Poiji -:version: v1.18.1 +:version: v1.19.0 image:https://travis-ci.org/ozlerhakan/poiji.svg?branch=master["Build Status", link="https://travis-ci.org/ozlerhakan/poiji"] image:https://api.codacy.com/project/badge/Grade/6587e90886184da29a1b7c5634695c9d["Codacy code quality", link="https://www.codacy.com/app/ozlerhakan/poiji?utm_source=github.com&utm_medium=referral&utm_content=ozlerhakan/poiji&utm_campaign=Badge_Grade"] image:https://coveralls.io/repos/github/ozlerhakan/poiji/badge.svg?branch=master["Coverage Status", link="https://coveralls.io/github/ozlerhakan/poiji?branch=master"] image:https://img.shields.io/badge/apache.poi-4.0.0-brightgreen.svg[] image:https://img.shields.io/badge/gitter-join%20chat-blue.svg["Gitter", link="https://gitter.im/poiji/Lobby"] image:https://img.shields.io/badge/license-MIT-blue.svg[] @@ -15,7 +15,7 @@ In your Maven/Gradle project, first add the corresponding dependency: com.github.ozlerhakan poiji - 1.18.1 + 1.19.0 ---- @@ -23,7 +23,7 @@ In your Maven/Gradle project, first add the corresponding dependency: [source,groovy] ---- dependencies { - compile 'com.github.ozlerhakan:poiji:1.18.1' + compile 'com.github.ozlerhakan:poiji:1.19.0' } ---- @@ -56,6 +56,7 @@ com.poiji.option.PoijiOptions.PoijiOptionsBuilder#settings(int) com.poiji.option.PoijiOptions.PoijiOptionsBuilder#sheetIndex(int) com.poiji.option.PoijiOptions.PoijiOptionsBuilder#skip(int) com.poiji.option.PoijiOptions.PoijiOptionsBuilder#trimCellValue(boolean) +com.poiji.option.PoijiOptions.PoijiOptionsBuilder#headerStart(int) ---- === Example 1 @@ -149,11 +150,11 @@ Employee firstEmployee = employees.get(0); // Employee{rowIndex=1, employeeId=123923, name='Joe', surname='Doe', age=30, single=true, birthday='4/9/1987'} ---- -By default, Poiji ignores the first row of the excel data. You can override this behaviour by setting a `PoijiOptions`. +By default, Poiji ignores the header row of the excel data. If you want to ignore the first row of data, you need to use `PoijiOptions`. [source,java] ---- -PoijiOptions options = PoijiOptionsBuilder.settings(2).build(); +PoijiOptions options = PoijiOptionsBuilder.settings(1).build(); // we eliminate Joe Doe. List employees = Poiji.fromExcel(new File("employees.xls"), Employee.class, options); Employee firstEmployee = employees.get(0); // Employee{rowIndex=2, employeeId=123123, name='Sophie', surname='Derue', age=20, single=true, birthday='5/3/1997'} @@ -315,6 +316,109 @@ Car car = cars.get(0); === Example 4 +Consider you have the table like below: + +|=== +5+|Class A 5+| Class B +|Name | Age | City | State | Zip Code | Name | Age | City | State | Zip Code + +|John Doe +|21 +|Vienna +|Virginia +|22349 +|Smith Michael +|32 +|McLean +|Virginia +|22309 + +|Jane Doe +|28 +|Greenbelt +|Maryland +|20993 +|Sean Paul +|25 +|Los Angeles +|California +|92384 + +|Paul Ryan +|19 +|Alexandria +|Virginia +|22312 +|John Peter +|25 +|Vienna +|Virginia +|22347 + +|Peter Pan +|23 +|Alexandria +|Virginia +|22314 +|Arnold Regan +|35 +|Seattle +|Washington +|90384 + +|=== + +The new `ExcelCellRange` annotation (as of 1.19) lets us aggregate a range of information in one object model. In this case, we collect the details of the first person in `classA` and for second person in `classB`: + +[source,java] +---- +public class Classes { + + @ExcelCellRange(begin = 0, end = 4) + private Person classA; + + @ExcelCellRange(begin = 5, end = 9) + private Person classB; + +} +---- + +[source, java] +---- +public class Person { + + @ExcelCellName("Name") + private String name; + + @ExcelCellName("Age") + private Integer age; + + @ExcelCellName("City") + private String city; + + @ExcelCellName("State") + private String state; + + @ExcelCellName("Zip Code") + private Integer zip; + +} +---- + +Using the conventional way, we can retrieve the data using `Poiji.fromExcel`: + +[source,java] +---- +List classes = Poiji.fromExcel(new File(excel), Classes.class); + +Classes firstRowClasses = actualClasses.get(0); + +Person firstRowPerson1 = firstRowClasses.getClassA(); +Person secondRowPerson2 = firstRowClasses.getClassB(); +---- + +=== Example 5 + As of 1.14, Poiji supports Consumer Interface. As https://github.com/ozlerhakan/poiji/pull/39#issuecomment-409521808[@fmarazita] explained the usage, there are several benefits of having a Consumer: 1. Huge excel file ( without you have all in memory) @@ -355,7 +459,7 @@ class Calculation { ---- File fileCalculation = new File(example.xlsx); -PoijiOptions options = PoijiOptionsBuilder.settings(1).sheetIndex(1).build(); +PoijiOptions options = PoijiOptionsBuilder.settings().sheetIndex(1).build(); Poiji.fromExcel(fileCalculation, Calculation.class, options, this::dbInsertion); @@ -388,8 +492,8 @@ Employee{employeeId=135923, name='Paul', surname='Raul', age=31, single=false, b == Stargazers over time image:https://starcharts.herokuapp.com/ozlerhakan/poiji.svg["Stargazers over time", link="https://starcharts.herokuapp.com/ozlerhakan/poiji"] - - + + == License MIT