Implementieren Sie eine benutzerdefinierte Berechnungs-Engine, um die Standard-Berechnungs-Engine von Aspose.Cells zu erweitern
Aspose.Cells hat eine leistungsstarke Berechnungsmaschine, die fast alle Microsoft Excel-Formeln berechnen kann. Trotzdem können Sie die standardmäßige Berechnungs-Engine erweitern, was Ihnen mehr Leistung und Flexibilität bietet.
Die folgende Eigenschaft und Klassen werden bei der Implementierung dieser Funktion verwendet.
Implementieren Sie eine benutzerdefinierte Berechnungs-Engine
Der folgende Code implementiert das benutzerdefinierte Berechnungsmodul. Es implementiert die SchnittstelleAbstractCalculationEngine die nur eine Methode hatberechnen(Berechnungsdaten daten). Diese Methode wird für alle Ihre Formeln aufgerufen. Innerhalb dieser Methode erfassen wir dieSUMME Formel und erhöht ihren Wert um 30. Wenn also der berechnete Wert von Aspose.Cells 20 ist, dann macht unsere benutzerdefinierte Engine 50, indem sie 30 addiert.
// 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()); | |
} |
Konsolenausgabe
Hier ist die Konsolenausgabe des obigen Beispielcodes.
Without Custom Engine Value of A1: 20
With Custom Engine Value of A1: 50