Export Scenario to Excel
This task exports the selected scenario to an Excel file.
@Bean
public ScriptedTaskDescription simpleExcelExportTask() {
ScriptedTaskDescription task = new ScriptedTaskDescription("SimpleExcelExportTask", "Export scenario to Excel");
task.setDescription("Exports the selected scenario to an Excel file");
setI18nKeys(task, "EXCEL_EXPORT");
var scenario = VariableAccessExpression.ofScenario();
var baseFileName = VariableAccessExpression.of("base file name");
var filter = VariableAccessExpression.ofFilter();
VariableAccessExpression scenarioData = VariableAccessExpression.of("scenario-data");
task.getScript()
.addStatement(AskInputStatement.ofVariable(scenario, true, JobInputType.SCENARIO_ID))
.addStatement(AskInputStatement.ofVariable(baseFileName, true, ParameterTypes.TEXT, "Name of the file to export to. Warning: a '.xlsx' extension will be appended."))
.addStatement(AskInputStatement.ofVariable(filter, false, JobInputType.ENTITIES, "Select the tables to export"))
// Load the scenario data into a variable
.addStatement(SetVariableStatement.of(
scenarioData.getVariableName(),
ScenarioDataExpression.of(scenario).withFormat(ScenarioDataFormat.EXCEL).onlyTables(filter)
))
// Set the Excel file as task output
.addStatement(SetTaskOutputStatement.of("Excel file",
FileExpression.of(
StringExpression.concat(baseFileName, StringExpression.of(".xlsx")),
BlobExpression.of(scenarioData),
StringExpression.of("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
)))
// If there are errors or warnings, we exit the task with an alert.
// The only known case is when the scenario content does not fit into an Excel file.
.addStatement(ExitTaskStatement.alerting(StringExpression.of("Exporting the scenario data was not completed successfully"))
.when(ScenarioDataExpression.hasErrorsOrWarnings(scenarioData))
);
return task;
}