package org.dayatang.excel; import org.apache.commons.lang3.time.DateUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.File; import java.util.Calendar; import java.util.Date; import static org.junit.Assert.*; public class ExcelReaderTest { private ExcelHandler instance; private File excelFile; @Before public void setUp() throws Exception { String excelFileName = getClass().getResource("/import.xls").toURI().toURL().getFile(); excelFile = new File(excelFileName); instance = new ExcelHandler(excelFile); } @After public void tearDown() throws Exception { instance.close(); } @Test public void testReadColumnIndexRange() throws Exception { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).columnRange(0, 6); ExcelRangeData data = instance.readRange(range); assertEquals(3, data.getRowCount()); assertEquals("suilink", data.getString(0, 0)); assertEquals("广州穗灵通讯科技有限公司", data.getString(0, 1)); assertTrue(DateUtils.isSameDay(data.getDate(0, 2), parseDate(2002, 7, 1))); assertNull(data.getDate(0, 3)); assertEquals(1, data.getInt(0, 4).intValue()); assertEquals(1L, data.getLong(0, 4).longValue()); assertEquals(1.0, data.getDouble(0, 4).doubleValue(), 0.0001); assertNull(data.getDate(0, 5)); assertFalse(data.getBoolean(0, 6)); assertTrue(data.getBoolean(1, 6)); assertNull(data.getDate(2, 6)); } @Test public void testReadColumnNameRange() throws Exception { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).columnRange("A", "G"); ExcelRangeData data = instance.readRange(range); assertEquals(3, data.getRowCount()); assertEquals("suilink", data.getString(0, 0)); assertEquals("广州穗灵通讯科技有限公司", data.getString(0, 1)); assertTrue(DateUtils.isSameDay(data.getDate(0, 2), parseDate(2002, 7, 1))); assertNull(data.getDate(0, 3)); assertEquals(1, data.getInt(0, 4).intValue()); assertEquals(1L, data.getLong(0, 4).longValue()); assertEquals(1.0, data.getDouble(0, 4).doubleValue(), 0.0001); assertNull(data.getDate(0, 5)); assertFalse(data.getBoolean(0, 6)); assertTrue(data.getBoolean(1, 6)); assertNull(data.getDate(2, 6)); } @Test public void testReadFixedRows() throws Exception { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).rowTo(2).columnRange("A", "G"); ExcelRangeData data = instance.readRange(range); assertEquals(2, data.getRowCount()); assertEquals("suilink", data.getString(0, 0)); assertEquals("广州穗灵通讯科技有限公司", data.getString(0, 1)); assertTrue(DateUtils.isSameDay(data.getDate(0, 2), parseDate(2002, 7, 1))); assertNull(data.getDate(0, 3)); assertEquals(1, data.getInt(0, 4).intValue()); assertEquals(1L, data.getLong(0, 4).longValue()); assertEquals(1.0, data.getDouble(0, 4).doubleValue(), 0.0001); assertNull(data.getDate(0, 5)); assertFalse(data.getBoolean(0, 6)); assertTrue(data.getBoolean(1, 6)); } private Date parseDate(int year, int month, int date) { Calendar result = Calendar.getInstance(); result.set(year, month - 1, date); return result.getTime(); } @Test(expected = IllegalStateException.class) public void testWrongNumeric() { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).rowTo(2).columnRange("A", "G"); ExcelRangeData data = instance.readRange(range); data.getDouble(0, 1); } @Test(expected = IllegalStateException.class) public void testWrongBoolean() { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).rowTo(2).columnRange("A", "G"); ExcelRangeData data = instance.readRange(range); data.getBoolean(0, 1); } @Test(expected = IllegalStateException.class) public void testWrongDate() { ExcelRange range = ExcelRange.sheetIndex(0).rowFrom(1).rowTo(2).columnRange("A", "G"); ExcelRangeData data = instance.readRange(range); data.getDate(0, 1); } }