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
70 e.printStackTrace();
71 }
72 }
73
74 }