use of org.apache.poi.ss.formula.udf.AggregatingUDFFinder in project poi by apache.
the class HSSFWorkbook method addToolPack.
/**
* Register a new toolpack in this workbook.
*
* @param toopack the toolpack to register
*/
@Override
public void addToolPack(UDFFinder toopack) {
AggregatingUDFFinder udfs = (AggregatingUDFFinder) _udfFinder;
udfs.add(toopack);
}
use of org.apache.poi.ss.formula.udf.AggregatingUDFFinder in project poi by apache.
the class TestWorkbook method testAddNameX.
@Test
public void testAddNameX() throws IOException {
HSSFWorkbook hwb = new HSSFWorkbook();
InternalWorkbook wb = TestHSSFWorkbook.getInternalWorkbook(hwb);
assertNotNull(wb.getNameXPtg("ISODD", AggregatingUDFFinder.DEFAULT));
FreeRefFunction NotImplemented = new FreeRefFunction() {
@Override
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {
throw new RuntimeException("not implemented");
}
};
/*
* register the two test UDFs in a UDF finder, to be passed to the evaluator
*/
UDFFinder udff1 = new DefaultUDFFinder(new String[] { "myFunc" }, new FreeRefFunction[] { NotImplemented });
UDFFinder udff2 = new DefaultUDFFinder(new String[] { "myFunc2" }, new FreeRefFunction[] { NotImplemented });
UDFFinder udff = new AggregatingUDFFinder(udff1, udff2);
assertNotNull(wb.getNameXPtg("myFunc", udff));
assertNotNull(wb.getNameXPtg("myFunc2", udff));
// myFunc3 is unknown
assertNull(wb.getNameXPtg("myFunc3", udff));
hwb.close();
}
use of org.apache.poi.ss.formula.udf.AggregatingUDFFinder in project poi by apache.
the class ExcelAntWorkbookUtil method getFunctions.
/**
* returns a UDFFinder that contains all of the functions added.
*
* @return
*/
protected UDFFinder getFunctions() {
String[] names = new String[xlsMacroList.size()];
FreeRefFunction[] functions = new FreeRefFunction[xlsMacroList.size()];
int x = 0;
for (Map.Entry<String, FreeRefFunction> entry : xlsMacroList.entrySet()) {
names[x] = entry.getKey();
functions[x] = entry.getValue();
}
UDFFinder udff1 = new DefaultUDFFinder(names, functions);
UDFFinder udff = new AggregatingUDFFinder(udff1);
return udff;
}
use of org.apache.poi.ss.formula.udf.AggregatingUDFFinder in project poi by apache.
the class TestExternalFunction method testInvoke.
/**
* Checks that an external function can get invoked from the formula
* evaluator.
*/
public void testInvoke() {
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("testNames.xls");
HSSFSheet sheet = wb.getSheetAt(0);
/**
* register the two test UDFs in a UDF finder, to be passed to the evaluator
*/
UDFFinder udff1 = new DefaultUDFFinder(new String[] { "myFunc" }, new FreeRefFunction[] { new MyFunc() });
UDFFinder udff2 = new DefaultUDFFinder(new String[] { "myFunc2" }, new FreeRefFunction[] { new MyFunc2() });
UDFFinder udff = new AggregatingUDFFinder(udff1, udff2);
HSSFRow row = sheet.getRow(0);
// =myFunc("_")
HSSFCell myFuncCell = row.getCell(1);
// =myFunc2("_")
HSSFCell myFunc2Cell = row.getCell(2);
HSSFFormulaEvaluator fe = HSSFFormulaEvaluator.create(wb, null, udff);
assertEquals("_abc", fe.evaluate(myFuncCell).getStringValue());
assertEquals("_abc2", fe.evaluate(myFunc2Cell).getStringValue());
}
Aggregations