Modifier la source de données du graphique vers la feuille de destination lors de la copie de lignes ou de plages avec C++

Scénarios d’utilisation possibles

Lorsque vous copiez des lignes ou une plage contenant des graphiques vers une nouvelle feuille de calcul, la source de données du graphique ne change pas. Par exemple, si la source de données du graphique est =Sheet1!$A$1:$B$4, alors après copie des lignes ou de la plage vers une nouvelle feuille, la source de données restera la même, c’est-à-dire =Sheet1!$A$1:$B$4. Elle fait toujours référence à l’ancien classeur, c’est-à-dire Sheet1. C’est aussi le comportement dans Microsoft Excel. Mais si vous souhaitez qu’elle fasse référence à la nouvelle feuille de destination, utilisez la propriété CopyOptions.GetReferToDestinationSheet() et définissez-la à true lors de l’appel de la méthode Cells.CopyRows(). Maintenant, si votre feuille de destination est DestSheet, la source de données de votre graphique passera de =Sheet1!$A$1:$B$4 à =DestSheet!$A$1:$B$4.

Changer la source de données du graphique vers la feuille de calcul de destination lors de la copie des lignes ou de la plage

Le code d’exemple suivant explique l’utilisation de la propriété CopyOptions.GetReferToDestinationSheet() lors de la copie de lignes ou de plages contenant des graphiques vers une nouvelle feuille. Le code utilise le fichier Excel d’exemple et génère le fichier Excel de sortie.

todo:image_alt_text

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Load sample Excel file
    Workbook wb(srcDir + u"sample.xlsx");

    // Access the first sheet which contains chart
    Worksheet source = wb.GetWorksheets().Get(0);

    // Add another sheet named DestSheet
    Worksheet destination = wb.GetWorksheets().Add(u"DestSheet");

    // Set CopyOptions.ReferToDestinationSheet to true
    CopyOptions options;
    options.SetReferToDestinationSheet(true);

    // Copy all the rows of source worksheet to destination worksheet which includes chart as well
    // The chart data source will now refer to DestSheet
    destination.GetCells().CopyRows(source.GetCells(), 0, 0, source.GetCells().GetMaxDisplayRange().GetRowCount(), options);

    // Save workbook in xlsx format
    wb.Save(srcDir + u"output_out.xlsx", SaveFormat::Xlsx);

    std::cout << "Workbook saved successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}