Aspose.Cells för CPP 17.02.0 Release Notes

Nyckel Sammanfattning Kategori
CELLSCPP-41 Beräkna formler i Excel-kalkylblad Ny funktion
CELLSCPP-42 Förbättrad prestanda vid läsning av XLSX-filer Förbättring

Offentlig API och bakåtinkompatibla ändringar

Följande är en lista över alla ändringar som gjorts för allmänheten API, såsom tillagda, bytt namn, borttagna eller utfasade medlemmar samt alla icke-bakåtkompatibla ändringar som gjorts till Aspose.Cells for C++. Om du har frågor om någon ändring som anges, vänligen ta upp den på supportforumet Aspose.Cells.

Lägger till metoden IWorkbook::CalculateFormula().

Den senaste versionen 17.02.0 av Aspose.Cells för CPP API har lagt till metoden IWorkbook::CalculateFormula(). Det hjälper utvecklare att beräkna resultatet av formler och lagra i lämplig cell i ett kalkylblad. Utvecklare kan också beräkna de anpassade formlerna.

Detta kodexempel visar hur man beräknar formlerna i ett Excel:

 	/*create a new workbook*/

	intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

	/*get the first worksheet*/

	intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();

	intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

	/*get cells*/

	intrusive_ptr<ICells> cells = ws->GetICells();

	/*set value to cell(0,0) and cell(1,0)*/

	cells->GetObjectByIndex(0, 0)->PutValue(3);

	cells->GetObjectByIndex(1, 0)->PutValue(2);

	/*set formula*/

	cells->GetObjectByIndex(0, 1)->SetFormula(new String("=SUM(A1,A2)"));

	/*formula calculation*/

	wb->CalculateFormula();

	/*check result*/

	EXPECT_TRUE(5 == cells->GetObjectByIndex(new String("B1"))->GetIntValue());

	/*save this workbook to resultFile*/

	wb->Save(resultPath->StringAppend(new String("book5.xlsx")));

Lägger till metoden IWorkbook::CalculateFormula(bool ignoreError).

Utvecklare kan beräkna formler på olika sätt. IWorkbook::CalculateFormula(bool ignoreError)-metoden tillåter utvecklare att beräkna resultatet av formler samt döljer felet i beräkningsformler. Ett fel kan uppstå på grund av att funktionen inte stöds, externa länkar etc.

Detta kodexempel visar hur man beräknar formlerna och ignorerar fel i en Excel:

 	/*create a new workbook*/

	intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

	/*get the first worksheet*/

	intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();

	intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

	/*get cells*/

	intrusive_ptr<ICells> cells = ws->GetICells();

	/*set value to cell(0,0) and cell(1,0)*/

	cells->GetObjectByIndex(0, 0)->PutValue(3);

	cells->GetObjectByIndex(1, 0)->PutValue(2);

	/*set formula*/

	cells->GetObjectByIndex(0, 1)->SetFormula(new String("=SUM(A1,A2)"));

	/*formula calculation*/

	wb->CalculateFormula(true);

	/*check result*/

	EXPECT_TRUE(5 == cells->GetObjectByIndex(new String("B1"))->GetIntValue());

	/*save this workbook to resultFile*/

	wb->Save(resultPath->StringAppend(new String("book5.xlsx")));

Lägger till metoden IWorkbook::CalculateFormula(intrusive_ptrAspose::Cells::ICalculationOptions options)

Den beräknar formler i arbetsboken.

Lägger till metoden IWorkbook::CalculateFormula(bool ignoreError,intrusive_ptrAspose::Cells::ICustomFunction customFunction)

Aspose.Cells för CPP API erbjuder ICustomFunction-gränssnitt. Utvecklare kan anropa metoden IWorkbook.CalculateFormula(false, ICustomFunction) för att anropa implementeringen av metoden ICustomFunction.CalculateCustomFunction(). Metoden ICustomFunction.CalculateCustomFunction() gör det möjligt att manipulera returvärdena för anpassade funktioner. I kodexemplet nedan utvärderar och returnerar implementeringen av ICustomFunction-gränssnittet värdena för två anpassade funktioner, dvs MySampleFunc() och YourSampleFunc(). Dessa anpassade funktioner finns inuti cellerna A1 respektive A2. Den skriver ut värdena för A1 och A2 på en konsol, som faktiskt är de värden som returneras av ICustomFunction.CalculateCustomFunction().

Detta kodexempel visar hur man beräknar formlerna, ignorerar fel och manipulerar returvärdena för anpassade funktioner i en Excel:

 //Implement ICustomFunction interface

class CustomFunction : public ICustomFunction

{

public:

    //Evalaute and return the values of your custom functions

    intrusive_ptr<Aspose::Cells::System::Object> 

        CalculateCustomFunction(

        intrusive_ptr<Aspose::Cells::System::String> functionName, 

        intrusive_ptr<Aspose::Cells::System::Collections::ArrayList> paramsList, 

        intrusive_ptr<Aspose::Cells::System::Collections::ArrayList> contextObjects)

    {

            if (functionName->Equals(new String("MySampleFunc")))

            {

                return new String("MY sample function was called successfully.");

            }



            if (functionName->Equals(new String("YourSampleFunc")))

            {

                return new String("YOUR sample function was called successfully.");

            }



            return NULL;

    }



};



//Call this function to run the code

void Run()

{

    //Create workbook

    intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();



    //Access first worksheet in the workbook

    intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);



    //Adding custom formulas to Cell A1 and A2

    ws->GetICells()->GetObjectByIndex(new String("A1"))->SetFormula(new String("=MySampleFunc()"));

    ws->GetICells()->GetObjectByIndex(new String("A2"))->SetFormula(new String("=YourSampleFunc()"));



    // Calcualting Formulas

    intrusive_ptr<CustomFunction> custFunc = new CustomFunction();

    wb->CalculateFormula(true, custFunc);



    //Print the value of cell A1 and A2 after the calculation of custom function implemented by us.

    intrusive_ptr<String> valA1 = ws->GetICells()->GetObjectByIndex(new String("A1"))->GetStringValue();

    intrusive_ptr<String> valA2 = ws->GetICells()->GetObjectByIndex(new String("A2"))->GetStringValue();



    //Print the values on console

    printf("Value of A1: %s\r\n", valA1->charValue());

    printf("Value of A2: %s\r\n", valA2->charValue());

}

Lägger till metoden IWorksheet::CalculateFormula(intrusive_ptrAspose::Cells::System::String formula)

Metoden IWorksheet::CalculateFormula(intrusive_ptrAspose::Cells::System::String formula) tillåter utvecklare att beräkna formelresultaten direkt utan att lägga till dem i ett kalkylblad. Värdena för celler som används i formeln finns redan i ett kalkylblad och utvecklare behöver bara hitta resultatet av dessa värden baserat på någon Microsoft Excel-formel utan att lägga till formeln i ett kalkylblad.

Detta kodexempel visar hur man beräknar formlerna direkt utan att lägga till dem i ett kalkylblad i en Excel:

 //Create workbook

intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();



//Access first worksheet in the workbook

intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);



//Put 20 in cell A1

intrusive_ptr<ICell> cellA1 = ws->GetICells()->GetObjectByIndex(new String("A1"));

cellA1->PutValue(20);



//Put 30 in cell A2

intrusive_ptr<ICell> cellA2 = ws->GetICells()->GetObjectByIndex(new String("A2"));

cellA2->PutValue(30);



//Calculate the Sum of A1 and A2

intrusive_ptr<Aspose::Cells::System::Object> results = ws->CalculateFormula(new String("=Sum(A1:A2)"));



//Print the output

printf("Value of A1: %s\r\n", cellA1->GetStringValue()->charValue());

printf("Value of A2: %s\r\n", cellA2->GetStringValue()->charValue());

printf("Result of Sum(A1:A2): %s\r\n", results->ToString()->charValue());

Lägger till IWorksheet::CalculateFormula(intrusive_ptrAspose::Cells::System::String formula, intrusive_ptrAspose::Cells::ICalculationOptions opts) metod

Den beräknar en formel på ett mer flexibelt sätt.

Lägger till IWorksheet::CalculateFormula(bool rekursiv, bool ignoreError, intrusive_ptrAspose::Cells::ICustomFunction customFunction) metod

Den beräknar alla formler i kalkylbladet.

Lägger till IWorksheet::CalculateFormula(intrusive_ptrAspose::Cells::ICalculationOptions optioner, bool rekursiv) metod

Den beräknar alla formler i kalkylbladet.

Lägger till metoden ICell::Calculate(intrusive_ptrAspose::Cells::ICalculationOptions options)

Den beräknar formeln för cellen i kalkylbladet.

Lägger till metoden ICell::Calculate(bool ignoreError , intrusive_ptrAspose::Cells::ICustomFunction customFunction)

Den beräknar formeln för cellen i kalkylbladet.

Användningsexempel

Kontrollera listan med hjälpämnen som lagts till i Aspose.Cells Wiki-dokument:

  1. Lägga till formler och beräkna resultat
  2. Direkt beräkning av formel
  3. Beräknar formler endast en gång
  4. Använder ICustomFunction-funktionen