Измените источник данных диаграммы на рабочий лист назначения при копировании строк или диапазона
Возможные сценарии использования
Когда вы копируете строки или диапазоны, содержащие диаграммы, на новый лист, источник данных диаграммы не меняется. Например, если источником данных диаграммы является =Лист1!$А$1:$В$4, то после копирования строк или диапазона на новый лист источник данных останется прежним, т.е. =Лист1!$А$1:$В$4. Он по-прежнему относится к старому рабочему листу, т.е. Sheet1. Это также поведение Microsoft Excel. Но если вы хотите, чтобы он ссылался на новый рабочий лист назначения, используйте свойство CopyOptions.ReferToDestinationSheet и установите для него значение true при вызове метода Cells.CopyRows(). Теперь, если целевым рабочим листом является DestSheet, источник данных вашей диаграммы изменится с =Sheet1!$A$1:$B$4 на =DestSheet!$A$1:$B$4.
Измените источник данных диаграммы на рабочий лист назначения при копировании строк или диапазона
В следующем примере кода объясняется использование свойства CopyOptions.ReferToDestinationSheet при копировании строк или диапазонов, содержащих диаграмму, на новый лист. В коде используетсяобразец эксель файла и генерируетвыходной файл excel . На снимке экрана показано, что источник данных диаграммы ввыходной файл excel теперь относится к DestSheet вместо Sheet1.
// 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); |