你可以放弃POI eventmodel中的处理表单吗?

我正在阅读大型XLSX工作簿中的多个工作表。 在其中一张表中,我只想要A1中的值。 该表可能包含大量的其他数据。 在获得我想要的一个值后,是否有可能中止处理表格的其余部分(以便考虑时间)?

这是我想要处理的地方:

private static class shValidationsHandler extends DefaultHandler { //The first cell (A1) holds the only value I want private static String lastVal = ""; public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { lastVal = ""; } public void endElement(String uri, String localName, String name) throws SAXException { if ( name.equals("v") && sCutOff.length() < 1 ) { sCutOff = lastVal; //<<==Can stop processing now==>> //<<=========This is what I added SAXException oFin = new SAXException("Finished"); StackTraceElement[] oStack = new StackTraceElement[1]; oStack[0] = new StackTraceElement("","","",0); oFin.setStackTrace(oStack); throw oFin; //<<==========End of what I added } } public void characters(char[] ch, int start, int length) throws SAXException { lastVal += new String(ch, start, length); } } 

有谁知道这是可能的吗?

你可以像在常规的SAXparsing器中停止parsing一样 – 创build一个SAXException的子类(即类似于HaltProcessingException东西),然后当你完成处理时抛出它 – 例如在sCutOff = lastVal;

然后,调用该处理程序的代码(可能类似parser.parse() )应该捕获特定的exception并logging完成处理,并抑制exception。