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

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

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

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

Следующий образец кода объясняет использование свойства CopyOptions.ReferToDestinationSheet при копировании строк или диапазона, содержащего диаграмму, на новый лист. Код использует образец файла Excel и генерирует выводной файл Excel. На скриншоте показано, что исходный источник данных диаграммы в выводном файле Excel теперь ссылается на DestSheet вместо Sheet1.

todo:image_alt_text

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
String dataDir = Utils.getDataDir(ChangeDataSource.class);
// Load sample excel file
Workbook wb = new Workbook(dataDir + "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("DestSheet");
// Set CopyOptions.ReferToDestinationSheet to true
CopyOptions options = new CopyOptions();
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(dataDir + "output.xlsx", SaveFormat.XLSX);