Изменение источника данных диаграммы на целевой лист при копировании строк или диапазона с помощью C++

Возможные сценарии использования

Когда вы копируете строки или диапазон с диаграммами в новый лист, источник данных диаграммы не меняется. Например, если источник данных диаграммы =Sheet1!$A$1:$B$4, то после копирования строк или диапазона на новый лист источник данных останется прежним, то есть =Sheet1!$A$1:$B$4. Он по-прежнему ссылается на старый лист, то есть Sheet1. Это также поведение в Microsoft Excel. Но если вы хотите, чтобы он ссылался на новый лист назначения, используйте свойство CopyOptions.GetReferToDestinationSheet() и установите его в значение true при вызове метода Cells.CopyRows(). Тогда, если ваш лист назначения — DestSheet, источник данных для вашей диаграммы изменится с =Sheet1!$A$1:$B$4 на =DestSheet!$A$1:$B$4.

Изменение источника данных диаграммы на целевой лист при копировании строк или диапазона

Следующий пример кода объясняет использование свойства CopyOptions.GetReferToDestinationSheet() при копировании строк или диапазона с диаграммами на новый лист. Код использует образец файла Excel и создает выходной файл Excel.

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();
}