Implementa il motore di calcolo personalizzato per estendere il motore di calcolo predefinito di Aspose.Cells
Aspose.Cells ha un potente motore di calcolo in grado di calcolare quasi tutte le formule Excel Microsoft. Nonostante ciò, ti consente anche di estendere il motore di calcolo predefinito che ti offre maggiore potenza e flessibilità.
Le seguenti proprietà e classi vengono utilizzate per implementare questa funzionalità.
Implementa il motore di calcolo personalizzato
Il codice seguente implementa il motore di calcolo personalizzato. Implementa l’interfacciaMotore di calcolo astratto che ha un solo metodocalcola(Dati CalcoloDati). Questo metodo viene chiamato contro tutte le tue formule. All’interno di questo metodo, acquisiamo il fileSOMMA formula e ne aumenta il valore di 30. Quindi, se il valore calcolato Aspose.Cells è 20, il nostro motore personalizzato lo renderà 50 aggiungendo 30.
// 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()); | |
} |
Uscita console
Ecco l’output della console del codice di esempio precedente.
Without Custom Engine Value of A1: 20
With Custom Engine Value of A1: 50