package function.read; import java.io.IOException; import java.io.InputStream; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.support.ExcelTypeEnum; import function.listener.ExcelListener; import function.model.OneRowHeadExcelModel; import junit.framework.TestCase; import org.junit.Test; /** * Created by jipengfei on 17/2/18. */ public class XLSX2007FunctionTest extends TestCase { //创建没有自定义模型,没有sheet的解析器,默认解析所有sheet解析结果以List的方式通知监听者 @Test public void testExcel2007NoModel() { InputStream inputStream = getInputStream("2007NoModelBigFile.xlsx"); try { // 解析每行结果在listener中处理 AnalysisEventListener listener = new ExcelListener(); ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, listener); reader.read(); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @Test public void testExcel2007NoModel2() { InputStream inputStream = getInputStream("test4.xlsx"); try { // 解析每行结果在listener中处理 AnalysisEventListener listener = new ExcelListener(); ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, listener); reader.read(); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } //创建没有自定义模型,但有规定sheet解析器,解析结果以List的方式通知监听者 @Test public void testExcel2007WithSheet() { InputStream inputStream = getInputStream("111.xlsx"); try { // 解析每行结果在listener中处理 AnalysisEventListener listener = new ExcelListener(); ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, listener); reader.read(new Sheet(1, 0)); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } //创建需要反射映射模型的解析器,解析结果List Object为自定义的模型 @Test public void testExcel2007WithReflectModel() { InputStream inputStream = getInputStream("2007.xlsx"); try { // 解析每行结果在listener中处理 AnalysisEventListener listener = new ExcelListener(); ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, listener); reader.read(new Sheet(1, 1, OneRowHeadExcelModel.class)); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @Test public void testExcel2007MultHeadWithReflectModel() { InputStream inputStream = getInputStream("2007_1.xlsx"); try { // 解析每行结果在listener中处理 AnalysisEventListener listener = new ExcelListener(); ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, listener); reader.read(new Sheet(1, 4, OneRowHeadExcelModel.class)); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } private InputStream getInputStream(String fileName) { return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName); } }