Прямой расчет пользовательской функции без записи ее в рабочий лист
Прямой расчет пользовательской функции без записи ее на лист
Пожалуйста, ознакомьтесь с приведенным ниже образцом кода, иллюстрирующим использование этого метода. Мы использовали пользовательскую функцию MyCompany.CustomFunction() и вычисляем ее значение как “Aspose.Cells." сами, затем это значение автоматически конкатенируется с значением ячейки A1, которое равно “Welcome to “, двигатель вычисления и возвращает итоговое вычисленное значение как “Welcome to Aspose.Cells.". Как видно из кода, мы нигде не записали нашу пользовательскую функцию на листе, и она вычисляется непосредственно нашей собственной пользовательской логикой.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
public class CustomEngine extends AbstractCalculationEngine | |
{ | |
// Override the Calculate method with custom logic | |
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 static void main(String[] args) throws Exception { | |
// 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()); | |
} |
Вывод в консоль
Ниже приведен вывод консоли приведенного выше образца кода.
Calculated Value: Welcome to Aspose.Cells.