Tag: notimplementedexception

Java POI:如何读取Excel单元格的值而不是计算公式呢?

我正在使用Apache POI API从Excel文件中获取值。 除了包含公式的单元之外,一切都很好。 事实上, cell.getStringCellValue()返回单元格中使用的公式,而不是单元格的值。 我试图使用evaluateFormulaCell()方法,但它不工作,因为我正在使用GETPIVOTDATA Excel公式,并没有在API中实现此公式: Exception in thread "main" org.apache.poi.ss.formula.eval.NotImplementedException: Error evaluating cell Landscape!K11 at org.apache.poi.ss.formula.WorkbookEvaluator.addExceptionInfo(WorkbookEvaluator.java:321) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:288) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:221) at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCellValue(HSSFFormulaEvaluator.java:320) at org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCell(HSSFFormulaEvaluator.java:213) at fromExcelToJava.ExcelSheetReader.unAutreTest(ExcelSheetReader.java:193) at fromExcelToJava.ExcelSheetReader.main(ExcelSheetReader.java:224) Caused by: org.apache.poi.ss.formula.eval.NotImplementedException: GETPIVOTDATA at org.apache.poi.hssf.record.formula.functions.NotImplementedFunction.evaluate(NotImplementedFunction.java:42)

为什么NotImplementedException存在?

这真的真的让我害怕,所以我希望有人能给我一个合理的理由,说明为什么事情是这样的。 NotImplementedException。 你在拉我的腿,对吧? 不,我不打算用这个便宜的东西来说:“等等,方法实现了 – 抛出一个NotImplementedExceptionexception。” 是的,没错,你必须实现这个方法来抛出一个NotImplementedExceptionexception(不像C ++中的纯虚函数调用 – 现在这是有道理的!)。 虽然这很有趣,但我脑海中还有一个更严重的问题。 我只是想知道,如果存在NotImplementedException,那么任何人都可以使用.Net做任何事情? 你是否期望用try catch块封装每个抽象方法调用,以防止可能不会被实现的方法? 如果你发现这样的例外,你应该怎么处理呢? 我没有办法testing一个方法是否实际上没有调用它。 由于调用它可能有副作用,我不能做所有我的检查,然后运行我的algorithm。 我必须运行我的algorithm,赶上NotImplementedExceptions和一些如何回滚我的应用程序到一个理智的状态。 这很疯狂。 狂。 疯。 所以问题是: 为什么NotImplementedException存在 ? 作为一个先发制人的攻击,我不希望任何人回应,“因为devise者需要把它放在自动生成的代码中”。 这是可怕的。 我宁愿自动生成的代码不编译,直到你提供一个实现。 例如,自动生成的实现可能是“throw NotImplementedException;” NotImplementedException未定义! 有没有人抓到和处理NotImplementedException? 你有没有在你的代码中留下NotImplementedException? 如果是这样,这是否代表定时炸弹(即,你不小心把它留在那里),还是一个devise缺陷(该方法不应该实施,将永远不会被称为)? 我非常怀疑NotSupportedException也…不支持? 什么? 如果不支持,为什么它是你的界面的一部分? 微软的任何人都可以inheritance不正当的inheritance权吗? 但是,如果我不为这个滥用,我可能会开始另一个问题。 附加信息: 这是一个有趣的主题阅读。 与Brad Abrams似乎有一个很强的一致意见:“NotImplementedException是针对那些尚未实现的function,但是确实应该(而且将会是),就像你在构build一个类的时候开始的那样,获取所有的方法那里抛出NotImplementedException,然后用真正的代码冲出来……“ Jared Parsons的评论非常微弱,应该被忽略:NotImplementedException:当一个types由于其他原因没有实现一个方法的时候抛出这个exception。 MSDN在这个问题上甚至更弱一些,只是指出:“当一个请求的方法或操作没有被执行时抛出exception。