java poi 事件模式采用SAX解析文档。sax一边扫描一边解析。和dom的一次加载到内存中不同。
所以sax不能指定访问到指定行到元素。
sax读取指定行到方法有两种(SheetContentsHandler):
1.实现POI到SheetContentsHandler接口,在方法endRow()中根据行索引得到想要到数据。
这种方法到缺点是:无论你想得到第几行数据,文档必须从头扫描到尾部。
例如:你只想要表头到第一行数据,那么10万的数据也必须从头扫描到尾部。
2.修改SheetContentsHandler接口源码 或者继承DefaultHandler
在endElement()方法中.如果读取到元素==row.那么直接抛出一个异常结束sax解析。