Прямой расчет пользовательской функции без записи ее в рабочий лист
Прямой расчет пользовательской функции без записи ее на лист
В данной теме объясняется, как можно прямо рассчитать пользовательские функции без предварительной записи их в рабочем листе. Пожалуйста, используйте метод Worksheet.CalculateFormula(string formula, CalculationOptions opts) для этой цели.
Пожалуйста, ознакомьтесь с приведенным ниже образцом кода, иллюстрирующим использование этого метода. Мы использовали пользовательскую функцию MyCompany.CustomFunction() и рассчитываем ее значение как “Aspose.Cells.” сами, после чего это значение автоматически конкатенируется со значением ячейки A1, которая равна “Добро пожаловать в " движком расчета, и окончательное рассчитанное значение возвращается как “Добро пожаловать в Aspose.Cells.”. Как видно из кода, мы не писали нашу пользовательскую функцию где-либо на рабочем листе, и она рассчитывается напрямую нашей собственной пользовательской логикой.
Пример программирования
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
class ICustomEngine : AbstractCalculationEngine | |
{ | |
// Override the Calculate method with custom logic | |
public override void Calculate(CalculationData data) | |
{ | |
// Check the forumla name and calculate it yourself | |
if (data.FunctionName == "MyCompany.CustomFunction") | |
{ | |
// This is our calculated value | |
data.CalculatedValue = "Aspose.Cells."; | |
} | |
} | |
} | |
class ImplementDirectCalculationOfCustomFunction | |
{ | |
public static void Run() | |
{ | |
// Create a workbook | |
Workbook wb = new Workbook(); | |
// Accesss first worksheet | |
Worksheet ws = wb.Worksheets[0]; | |
// Add some text in cell A1 | |
ws.Cells["A1"].PutValue("Welcome to "); | |
// Create a calculation options with custom engine | |
CalculationOptions opts = new CalculationOptions(); | |
opts.CustomEngine = new ICustomEngine(); | |
// 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 | |
Console.WriteLine("Calculated Value: " + ret); | |
} | |
} |
Вывод в консоль
Ниже приведен вывод консоли приведенного выше образца кода.
Calculated Value: Welcome to Aspose.Cells.