View Javadoc
1   package net.technearts.rip;
2   
3   import java.io.IOException;
4   import java.io.InputStream;
5   import java.io.OutputStream;
6   import java.util.ArrayList;
7   import java.util.Iterator;
8   import java.util.List;
9   
10  import org.apache.poi.ss.usermodel.Cell;
11  import org.apache.poi.ss.usermodel.Row;
12  import org.apache.poi.ss.usermodel.Sheet;
13  import org.apache.poi.ss.usermodel.Workbook;
14  import org.apache.poi.xssf.usermodel.XSSFWorkbook;
15  
16  import com.fasterxml.jackson.core.JsonFactory;
17  import com.fasterxml.jackson.core.JsonGenerator;
18  
19  public class RipExcelReader {
20  
21    public static RipExcelReader setIO(final InputStream in,
22        final OutputStream out) throws IOException {
23      final RipExcelReader result = new RipExcelReader();
24      result.workbook = new XSSFWorkbook(in);
25      result.out = out;
26      return result;
27    }
28  
29    private OutputStream out;
30  
31    private Workbook workbook;
32  
33    public RipExcelReader() {
34  
35    }
36  
37    public void read() {
38      readSheet(workbook.getSheetAt(0));
39    }
40  
41    public void readSheet(final Sheet sheet) {
42      final JsonFactory factory = new JsonFactory();
43  
44      try (JsonGenerator generator = factory.createGenerator(out)) {
45        generator.writeStartObject();
46        generator.writeArrayFieldStart(sheet.getSheetName());
47        final Iterator<Row> i = sheet.rowIterator();
48        Row r;
49        r = i.next();
50        Cell header;
51        final List<String> headers = new ArrayList<>();
52        int col = 0;
53        while ((header = r.getCell(col++)) != null) {
54          headers.add(header.getStringCellValue());
55        }
56        while (i.hasNext()) {
57          r = i.next();
58          generator.writeStartObject();
59          col = 0;
60          for (final String key : headers) {
61            generator.writeStringField(key, r.getCell(col++).toString());
62  
63          }
64          generator.writeEndObject();
65        }
66        generator.writeEndArray();
67        generator.writeEndObject();
68      } catch (final IOException e) {
69        // TODO Auto-generated catch block
70        e.printStackTrace();
71      }
72    }
73  
74  }