阅读第一行后如何中断POIstream媒体阅读器?

我需要find一种方法来在第一行之后中断stream读取器(读取XML并用SAXparsing它)。 读完列名后的含义

任何想法如何做到这一点?

码:

XSSFSheetXMLHandler.SheetContentsHandler mySheetContentsHandler = new MySheetContentsHandler(true, xlsxHeaders); File myFile = new File(filePath); OPCPackage pkg = OPCPackage.open(myFile.getPath()); XSSFReader reader = new XSSFReader(pkg); StylesTable styles = reader.getStylesTable(); ReadOnlySharedStringsTable sharedStrings = new ReadOnlySharedStringsTable(pkg); ContentHandler handler = new XSSFSheetXMLHandler(styles, sharedStrings, mySheetContentsHandler, true); XMLReader parser = XMLReaderFactory.createXMLReader(); parser.setContentHandler(handler); parser.parse(new InputSource(reader.getSheetsData().next())); 

正如你在这里看到的, XSSFSheetXMLHandler.SheetContentsHandler是一个有4个方法的接口。 但是,我怎样才能中断文件的阅读?

我试图做handler.endDocument(); 已经在接口的endRow();方法中执行了endRow(); ,它没有帮助,程序去了另一排没有任何中断。

一个模糊的想法:

如何扩展XSSFSheetXMLHandler,有一个方法“iterrupt”,设置一些标志为真。 并重写start / endElement,start / endDocument。 你所能做的就像下面的例子

 @Override public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String name, org.xml.sax.Attributes attributes) { if(interrupted) { //throw your custom exception; } super.startElement(uri,localName,name,attributes); 

}

或者在你的class MySheetContentsHandler可以引入方法,然后在cell(...)endRow可以检查处理之前的中断状态? 同样,你可以覆盖其他方法。 值得一试?