[转]NPOI TestFunctionRegistry.cs
本文转自:https://github.com/tonyqus/npoi/blob/master/testcases/main/SS/Formula/TestFunctionRegistry.cs
| /* | |
| * ==================================================================== | |
| * Licensed to the Apache Software Foundation (ASF) under one or more | |
| * contributor license agreements. See the NOTICE file distributed with | |
| * this work for additional information regarding copyright ownership. | |
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| * (the "License"); you may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * ==================================================================== | |
| */ | |
| using System; | |
| using NPOI.HSSF.UserModel; | |
| using NPOI.SS.Formula; | |
| using NPOI.SS.Formula.Atp; | |
| using NPOI.SS.Formula.Eval; | |
| using NPOI.SS.Formula.Functions; | |
| using NPOI.SS.UserModel; | |
| using NUnit.Framework; | |
| namespace TestCases.SS.Formula | |
| { | |
| /** | |
| * | |
| * @author Yegor Kozlov | |
| */ | |
| [TestFixture] | |
| public class TestFunctionRegistry | |
| { | |
| [Test] | |
| public void TestRegisterInRuntime() | |
| { | |
| HSSFWorkbook wb = new HSSFWorkbook(); | |
| HSSFSheet sheet = (HSSFSheet)wb.CreateSheet("Sheet1"); | |
| HSSFRow row = (HSSFRow)sheet.CreateRow(0); | |
| HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); | |
| HSSFCell cellA = (HSSFCell)row.CreateCell(0); | |
| cellA.CellFormula = ("FISHER(A5)"); | |
| CellValue cv; | |
| try | |
| { | |
| //NPOI | |
| //Run it twice in NUnit Gui Window, the first passed but the second failed. | |
| //Maybe the function was cached. Ignore it. | |
| cv = fe.Evaluate(cellA); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (NotImplementedException) | |
| { | |
| ; | |
| } | |
| FunctionEval.RegisterFunction("FISHER", new Function1());/*Function() { | |
| public ValueEval Evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex) { | |
| return ErrorEval.NA; | |
| } | |
| });*/ | |
| cv = fe.Evaluate(cellA); | |
| Assert.AreEqual(ErrorEval.NA.ErrorCode, cv.ErrorValue); | |
| HSSFCell cellB = (HSSFCell)row.CreateCell(1); | |
| cellB.CellFormula = ("CUBEMEMBERPROPERTY(A5)"); | |
| try | |
| { | |
| cv = fe.Evaluate(cellB); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (NotImplementedException) | |
| { | |
| ; | |
| } | |
| AnalysisToolPak.RegisterFunction("CUBEMEMBERPROPERTY", new FreeRefFunction1());/*FreeRefFunction() { | |
| public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec) { | |
| return ErrorEval.NUM_ERROR; | |
| } | |
| });*/ | |
| cv = fe.Evaluate(cellB); | |
| Assert.AreEqual(ErrorEval.NUM_ERROR.ErrorCode, cv.ErrorValue); | |
| } | |
| private class Function1 : NPOI.SS.Formula.Functions.Function | |
| { | |
| public ValueEval Evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex) | |
| { | |
| return ErrorEval.NA; | |
| } | |
| } | |
| private class FreeRefFunction1 : FreeRefFunction | |
| { | |
| public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec) | |
| { | |
| return ErrorEval.NUM_ERROR; | |
| } | |
| } | |
| class Function2 : NPOI.SS.Formula.Functions.Function | |
| { | |
| public ValueEval Evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex) | |
| { | |
| return ErrorEval.NA; | |
| } | |
| } | |
| [Test] | |
| public void TestExceptions() | |
| { | |
| NPOI.SS.Formula.Functions.Function func = new Function2(); | |
| try | |
| { | |
| FunctionEval.RegisterFunction("SUM", func); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("POI already implememts SUM" + | |
| ". You cannot override POI's implementations of Excel functions", e.Message); | |
| } | |
| try | |
| { | |
| FunctionEval.RegisterFunction("SUMXXX", func); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("Unknown function: SUMXXX", e.Message); | |
| } | |
| try | |
| { | |
| FunctionEval.RegisterFunction("ISODD", func); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("ISODD is a function from the Excel Analysis Toolpack. " + | |
| "Use AnalysisToolpack.RegisterFunction(String name, FreeRefFunction func) instead.", e.Message); | |
| } | |
| FreeRefFunction atpFunc = new FreeRefFunction2();/*FreeRefFunction() { | |
| public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec) { | |
| return ErrorEval.NUM_ERROR; | |
| } | |
| };*/ | |
| try | |
| { | |
| AnalysisToolPak.RegisterFunction("ISODD", atpFunc); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("POI already implememts ISODD" + | |
| ". You cannot override POI's implementations of Excel functions", e.Message); | |
| } | |
| try | |
| { | |
| AnalysisToolPak.RegisterFunction("ISODDXXX", atpFunc); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("ISODDXXX is not a function from the Excel Analysis Toolpack.", e.Message); | |
| } | |
| try | |
| { | |
| AnalysisToolPak.RegisterFunction("SUM", atpFunc); | |
| Assert.Fail("expectecd exception"); | |
| } | |
| catch (ArgumentException e) | |
| { | |
| Assert.AreEqual("SUM is a built-in Excel function. " + | |
| "Use FunctoinEval.RegisterFunction(String name, Function func) instead.", e.Message); | |
| } | |
| } | |
| class FreeRefFunction2 : FreeRefFunction | |
| { | |
| public ValueEval Evaluate(ValueEval[] args, OperationEvaluationContext ec) | |
| { | |
| return ErrorEval.NUM_ERROR; | |
| } | |
| } | |
| } | |
| } |
[转]NPOI TestFunctionRegistry.cs的更多相关文章
- NPOI 在指定单元格导入导出图片
NPOI 在指定单元格导入导出图片 Intro 我维护了一个 NPOI 的扩展,主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求,于是就有了本文的探索 导入E ...
- NPOIHelper.cs (NPOI 2.1.1)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- C#利用NPOI处理excel的类 NPOIHelper.cs
个人的NPOIHelp类,包括datatable导出到excel,dataset导出到excel,excel导入到datatable,excel导入到dataset, 更新excel中的数据,验证导入 ...
- (C#)使用NPOI导出Excel
在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...
- 使用NPOI从Excel中提取图片及图片位置信息
问题背景: 话说,在ExcelReport的开发过程中,有一个比较棘手的问题:怎么复制图片呢? 当然,解决这个问题的第一步是:能使用NPOI提取到图片及图片的位置信息.到这里,一切想法都很顺利.但NP ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility
1. ExcelUtility功能: 1.将数据导出到EXCEL(支持XLS,XLSX,支持多种类型模板,支持列宽自适应) 类名:ExcelUtility. Export 2.将EXCEL ...
- ASP.NET使用NPOI加载Excel模板并导出下载
1.为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导 ...
- 使用NPOI将TABLE内容导出到EXCEL
项目中需要将页面中的table内容导出到EXCEL,在用了几种方法后发现NPO是最快&最好的 需要应用 NPOI.dll 还有个Ionic.Zip.dll不知道有用没,没去研究,两个DLL都放 ...
- NPOI 读写Excel
实例功能概述: 1.支持Excel2003以及2007 2.支持Excel读取到DataTable(TableToExcel) 3.支持DataTable导出到Excel(TableToExcel) ...
随机推荐
- asp.net mvc UpdateModel 更新对象后出现null
在用asp.net mvc 4.0做项目的时候遇到的这种情况 在填写表单的时候,有一些表单没有填写,留空,然后直接post 提交表单,action中用UpdateModel 来更新model, 结果发 ...
- 将C1Chart数据导出到Excel
大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...
- xshell下载文件到本地/上传文件到服务器
xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其 ...
- 安装性能测试工具:sysbench和使用apache的ab
一.软件的用途,它主要包括以下几种方式的测试:1.cpu性能2.磁盘io性能3.调度程序性能4.内存分配及传输速度5.POSIX线程性能6.数据库性能(OLTP基准测试) 这个软件为什么找不到官网呢? ...
- If you insist running as root, then set the environment variable RUN_AS_USER=root...
版权声明:本文为博主原创文章,不经博主允许注明链接即可转载. If you insist running as root, then set theenvironment variable RUN_A ...
- 六个字符,带你领略JavaScript (js的艺术编写)
正文从这开始- JavaScript是一门神奇且奇妙的编程语言,我们有时候用它来写一些看似疯狂的代码,但这些代码依然可被执行且运行结果十分有趣.JavaScript 试图帮助我们将一些数据类型转化为我 ...
- inherit与auto
大家是不是和我一样,在刚开始学习css的时候,在css文件开头是不是经常看到这样的代码: * {margin:0 px; padding:0 px;} . 在接下来设置颜色字体时在body元素的cs ...
- GetReadyForWin10Develop
GetReadyForWin10Develop 序言 今年4月29日晚的微软的Build大会上,微软在现场为我们演示了Android和IOS应用移植到windows平台,加上原本可以开发win8应用的 ...
- SharePoint 2010 类似人人网站内信功能实施
简介:用SharePoint代码加实施的方式,完成类似人人网站内信功能,当然,实现的比较简单,样式也比较难看,只为给大家一个实施的简单思路,如有谬误,还请见谅.当然,还有就是截图比较长,当然为了让大家 ...
- How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志
How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志 Add Microsoft.Office.Server dll in your project ...