Implémenter un moteur de calcul personnalisé pour étendre le moteur de calcul par défaut de Aspose.Cells

Implémenter un moteur de calcul personnalisé

Le code suivant implémente le moteur de calcul personnalisé. Il implémente l’interface AbstractCalculationEngine qui n’a qu’une seule méthode calculate(CalculationData data). Cette méthode est appelée pour toutes vos formules. À l’intérieur de cette méthode, nous capturons la fonction TODAY et ajoutons un jour à la date système. Donc, si la date actuelle est le 27/07/2023, alors le moteur personnalisé calculera AUJOURDHUI() comme 28/07/2023.

Exemple de programmation

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public class CustomEngine extends AbstractCalculationEngine {
public void calculate(CalculationData data) {
if (data.getFunctionName().toUpperCase().equals("TODAY")) {
data.setCalculatedValue(CellsHelper.getDoubleFromDateTime(DateTime.getNow(), false) + 1.0);
}
}
public getProcessBuiltInFunctions() { return true; }
}
public static void main(String[] args) throws Exception {
// The path to the documents directory.
String dataDir = Utils.getDataDir(ImplementCustomCalculationEngine.class);
Workbook workbook = new Workbook();
Worksheet sheet = workbook.getWorksheets().get(0);
Cell a1 = sheet.getCells().get("A1");
Style style = cell.getStyle();
style.setNumber(14);
cell.setStyle(style);
a1.setFormula("=TODAY()");
// Without Custom Engine, the value of cell A1 will be 20
workbook.calculateFormula();
System.out.println("Without Custom Engine Value of A1: " + a1.getStringValue());
// With Custom Engine, the value of cell A1 will be 50
CalculationOptions opts = new CalculationOptions();
opts.setCustomEngine(new CustomEngine());
workbook.calculateFormula(opts);
System.out.println("With Custom Engine Value of A1: " + a1.getStringValue());
}

Résultat

Veuillez vérifier la sortie de la console du code d’échantillon ci-dessus, la valeur (date/heure) de A1 avec le moteur personnalisé devrait être un jour plus tard que le résultat sans le moteur personnalisé.

Article connexe