Cambiar la fuente de datos del gráfico a la hoja de trabajo de destino al copiar filas o rango
Escenarios de uso posibles
Cuando copias filas o un rango que contiene gráficos a una nueva hoja de trabajo, entonces la fuente de datos del gráfico no cambia. Por ejemplo, si la fuente de datos del gráfico es =Hoja1!$A$1:$B$4, entonces después de copiar filas o un rango a una nueva hoja de trabajo, la fuente de datos seguirá siendo la misma es decir =Hoja1!$A$1:$ B$4. Todavía se refiere a la hoja de trabajo antigua, es decir, Hoja1. Este también es el comportamiento de Microsoft Excel. Pero si quieres que se refiera a la nueva hoja de trabajo de destino, entonces por favor usa la propiedad CopyOptions.ReferToDestinationSheet y configúrala en verdadero al llamar al método Cells.CopyRows(). Ahora si tu hoja de trabajo de destino es DestSheet, entonces la fuente de datos de tu gráfico cambiará de =Hoja1!$A$1:$B$4 a =DestSheet!$A$1:$B$4.
Cambiar la fuente de datos del gráfico a la hoja de trabajo de destino al copiar filas o rango
El siguiente código de muestra explica el uso de la propiedad CopyOptions.ReferToDestinationSheet al copiar filas o rango que contienen un gráfico a una nueva hoja de trabajo. El código utiliza el archivo de Excel de muestra y genera el archivo de Excel de salida. La captura de pantalla muestra que la fuente de datos del gráfico en el archivo de Excel de salida ahora se refiere a DestSheet en lugar de Hoja1.
// 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); |