Skapa, manipulera eller ta bort scenarier från arbetsblad med C++
Contents
[
Hide
]
Ibland behöver du skapa, manipulera eller radera scenarier i kalkylblad. Ett scenario är en namngiven ‘vad om?'-modell som inkluderar variabelindataceller kopplade av en eller flera formler. Innan scenariot skapas, utforma kalkylbladet så att det innehåller minst en formel som beror på celler där olika värden kan sättas in. Följande exempel visar hur man skapar och tar bort scenarier från ett kalkylblad i en arbetsbok via Aspose.Cells-API:
Aspose.Cells erbjuder några användbara klasser, exempelvis ScenarioCollection, Scenario, ScenarioInputCellCollection och ScenarioInputCell. Den ger även egenskapen Worksheet.GetScenarios(). Kodexemplet nedan öppnar en XLSX-fil som innehåller scenarier och tar bort ett befintligt scenario. Det lägger också till ett nytt scenario till arbetsbladet innan Excel-filen sparas. Exemplet använder en mycket enkel mallfil som innehåller ett scenario.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Source and output directories
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Load input Excel file
Workbook workbook(srcDir + u"aspose-sample.xlsx");
// Access first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Access scenarios collection
ScenarioCollection scenarios = worksheet.GetScenarios();
if (scenarios.GetCount() > 0)
{
// Create new scenario and configure
int32_t scenarioIndex = scenarios.Add(u"MyScenario");
Scenario scenario = scenarios.Get(scenarioIndex);
scenario.SetComment(u"Test scenario is created.");
// Add input cell to scenario
ScenarioInputCellCollection inputCells = scenario.GetInputCells();
inputCells.Add(3, 1, u"1100000"); // Cell B4 (0-based)
// Save modified workbook
U16String outputPath = outDir + u"outBk_scenarios1.out.xlsx";
workbook.Save(outputPath);
std::cout << "\nProcess completed successfully.\nFile saved at " << outputPath.ToUtf8() << std::endl;
}
Aspose::Cells::Cleanup();
return 0;
}