行や範囲をコピーしながら、チャートのデータソースをコピー先のワークシートに変更します。
Contents
[
Hide
]
可能な使用シナリオ
新しいワークシートにチャートを含む行や範囲をコピーすると、チャートのデータソースは変更されません。例えば、チャートのデータソースが =Sheet1!$A$1:$B$4 の場合、行や範囲を新しいワークシートにコピーした後も、データソースは同じ =Sheet1!$A$1:$B$4 のままで、古いシート(Sheet1)を参照し続けます。これはMicrosoft Excelでも同じ挙動です。ただし、宛先ワークシートを参照させたい場合は、CopyOptions.GetReferToDestinationSheet() プロパティを使用し、Cells.CopyRows() メソッドを呼び出す際に true に設定してください。例えば、宛先ワークシートが DestSheet の場合、チャートのデータソースは =Sheet1!$A$1:$B$4 から =DestSheet!$A$1:$B$4 に変わります。
行や範囲をコピーする際に、チャートのデータソースを宛先ワークシートに変更する
次のサンプルコードは、チャートを含む行や範囲を新しいワークシートにコピーする際に、CopyOptions.GetReferToDestinationSheet()プロパティの使用例を示しています。このコードはサンプルExcelファイルを使用し、出力Excelファイルを生成します。
#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();
}