1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.dbunit.dataset.excel;
22
23 import java.io.File;
24 import java.io.FileInputStream;
25 import java.io.IOException;
26 import java.io.InputStream;
27 import java.io.OutputStream;
28
29 import org.apache.poi.EncryptedDocumentException;
30 import org.apache.poi.ss.usermodel.Workbook;
31 import org.apache.poi.ss.usermodel.WorkbookFactory;
32 import org.dbunit.dataset.AbstractDataSet;
33 import org.dbunit.dataset.DataSetException;
34 import org.dbunit.dataset.DefaultTableIterator;
35 import org.dbunit.dataset.IDataSet;
36 import org.dbunit.dataset.ITable;
37 import org.dbunit.dataset.ITableIterator;
38 import org.dbunit.dataset.OrderedTableNameMap;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42
43
44
45
46
47
48
49
50
51 public class XlsDataSet extends AbstractDataSet
52 {
53
54
55
56
57 private static final Logger logger = LoggerFactory.getLogger(XlsDataSet.class);
58
59 private final OrderedTableNameMap _tables;
60
61
62
63
64
65 public XlsDataSet(File file) throws IOException, DataSetException
66 {
67 this(new FileInputStream(file));
68 }
69
70
71
72
73 public XlsDataSet(InputStream in) throws IOException, DataSetException
74 {
75 _tables = super.createTableNameMap();
76
77 Workbook workbook;
78 try {
79 workbook = WorkbookFactory.create(in);
80 } catch (EncryptedDocumentException e) {
81 throw new IOException(e);
82 }
83
84 int sheetCount = workbook.getNumberOfSheets();
85 for (int i = 0; i < sheetCount; i++)
86 {
87 ITable table = new XlsTable(workbook.getSheetName(i),
88 workbook.getSheetAt(i));
89 _tables.add(table.getTableMetaData().getTableName(), table);
90 }
91 }
92
93
94
95
96 public static void write(IDataSet dataSet, OutputStream out)
97 throws IOException, DataSetException
98 {
99 logger.debug("write(dataSet={}, out={}) - start", dataSet, out);
100
101 new XlsDataSetWriter().write(dataSet, out);
102 }
103
104
105
106
107
108 protected ITableIterator createIterator(boolean reversed)
109 throws DataSetException
110 {
111 if(logger.isDebugEnabled())
112 logger.debug("createIterator(reversed={}) - start", String.valueOf(reversed));
113
114 ITable[] tables = (ITable[]) _tables.orderedValues().toArray(new ITable[0]);
115 return new DefaultTableIterator(tables, reversed);
116 }
117 }