package com.aspose.cells.examples.articles;
import com.aspose.cells.AbstractCalculationEngine;
import com.aspose.cells.CalculationData;
import com.aspose.cells.CalculationOptions;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
public class CalculateCustomFunctionWithoutWritingToWorksheet {
public class CustomEngine extends AbstractCalculationEngine {
public void calculate(CalculationData data) {
// Check the forumla name and calculate it yourself
if (data.getFunctionName().equals("MyCompany.CustomFunction")) {
// This is our calculated value
data.setCalculatedValue("Aspose.Cells.");
}
}
}
public void Run() {
// TODO Auto-generated method stub
// Create a workbook
Workbook wb = new Workbook();
// Accesss first worksheet
Worksheet ws = wb.getWorksheets().get(0);
// Add some text in cell A1
ws.getCells().get("A1").putValue("Welcome to ");
// Create a calculation options with custom engine
CalculationOptions opts = new CalculationOptions();
opts.setCustomEngine(new CustomEngine());
// This line shows how you can call your own custom function without
// a need to write it in any worksheet cell
// After the execution of this line, it will return
// Welcome to Aspose.Cells.
Object ret = ws.calculateFormula("=A1 & MyCompany.CustomFunction()", opts);
// Print the calculated value on Console
System.out.println("Calculated Value: " + ret.toString());
}
}