Copiando Filas y Columnas

Introducción

A veces, necesitas copiar filas y columnas en una hoja de cálculo sin copiar toda la hoja. Con Aspose.Cells, es posible copiar filas y columnas dentro o entre libros de trabajo.

Cuando se copia una fila (o columna), se copia también los datos contenidos en ella, incluidas fórmulas - con referencias actualizadas - y valores, comentarios, formato de celdas, celdas ocultas, imágenes y otros objetos de dibujo.

Copiando Filas y Columnas con Microsoft Excel

  1. Selecciona la fila o columna que deseas copiar.
  2. Para copiar filas o columnas, haz clic en Copiar en la barra de herramientas Estándar, o presiona CTRL+C.
  3. Selecciona una fila o columna debajo o a la derecha de donde deseas copiar tu selección.
  4. Al copiar filas o columnas, haz clic en Celdas Copiadas en el menú Insertar.

Copiando una Sola Fila

Aspose.Cells proporciona el método copyRow de la clase Cells. Este método copia todo tipo de datos incluyendo fórmulas, valores, comentarios, formatos de celdas, celdas ocultas, imágenes y otros objetos de dibujo de la fila de origen a la fila de destino.

El método copyRow toma los siguientes parámetros:

  • el objeto de Cells de origen,
  • el índice de fila de origen, y
  • el índice de fila de destino.

Utilice este método para copiar una fila dentro de una hoja o a otra hoja. El método copyRow funciona de manera similar a Microsoft Excel. Por lo tanto, por ejemplo, no es necesario establecer la altura de la fila de destino explícitamente, ese valor también se copia.

El siguiente ejemplo muestra cómo copiar una fila en una hoja de cálculo. Utiliza un archivo de plantilla de Microsoft Excel y copia la segunda fila (completa con datos, formato, comentarios, imágenes, etc.) y la pega en la 12ª fila en la misma hoja de cálculo.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(CopyingRows.class) + "rows_cloumns/";
// Create a new Workbook.
Workbook excelWorkbook = new Workbook(dataDir + "book1.xls");
// Get the first worksheet in the workbook.
Worksheet wsTemplate = excelWorkbook.getWorksheets().get(0);
// Copy the second row with data, formating, images and drawing objects to the 12th row in the worksheet.
wsTemplate.getCells().copyRow(wsTemplate.getCells(), 2, 10);
// Save the excel file.
excelWorkbook.save(dataDir + "CopyingRows_out.xls");
// Print message
System.out.println("Row and Column copied successfully.");

El siguiente resultado se genera cuando se ejecuta el siguiente código.

La fila se copia con el más alto grado de precisión y exactitud

todo:image_alt_text

Copia de varias filas

También puedes copiar varias filas en un nuevo destino mientras usas el método Cells.copyRows que toma un parámetro adicional de tipo entero para especificar la cantidad de filas de origen que se copiarán.

A continuación se muestra una captura de pantalla de la hoja de cálculo de entrada que contiene 3 filas de datos, mientras que el fragmento de código proporcionado a continuación copia las 3 filas a una nueva ubicación a partir de la 7ª fila.

todo:image_alt_text

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(CopyingMultipleRows.class);
// Create an instance of Workbook class by loading the existing spreadsheet
Workbook workbook = new Workbook(dataDir + "aspose-sample.xlsx");
// Get the cells collection of worksheet by name Rows
Cells cells = workbook.getWorksheets().get("Rows").getCells();
// Copy the first 3 rows to 7th row
cells.copyRows(cells, 0, 6, 3);
// Save the result on disc
workbook.save(dataDir + "output.xlsx");

Aquí está la vista resultante de la hoja de cálculo después de ejecutar el fragmento de código anterior.

todo:image_alt_text

Copia de una sola columna

Aspose.Cells proporciona el método copyColumn de la clase Cells, este método copia todos los tipos de datos, incluyendo fórmulas - con referencias actualizadas - y valores, comentarios, formatos de celda, celdas ocultas, imágenes y otros objetos de dibujo de la columna de origen a la columna de destino.

El método copyColumn toma los siguientes parámetros:

  • el objeto de Cells de origen,
  • índice de columna de origen, y
  • el índice de columna de destino.

Utilice el método copyColumn para copiar una columna dentro de una hoja o a otra hoja.

Este ejemplo copia una columna de una hoja de cálculo y la pega en una hoja de cálculo en otro libro.

Se copia una columna de un libro a otro

todo:image_alt_text

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(CopyingColumns.class) + "rows_cloumns/";
// Create a new Workbook.
Workbook excelWorkbook = new Workbook(dataDir + "book1.xls");
// Get the first worksheet in the workbook.
Worksheet wsTemplate = excelWorkbook.getWorksheets().get(0);
// Copy the first column from the first worksheet of the first workbook into the first worksheet of the second workbook.
wsTemplate.getCells().copyColumn(wsTemplate.getCells(), 1, 4);
// Save the excel file.
excelWorkbook.save(dataDir + "CopyingColumns_out.xls");
// Print message
System.out.println("Row and Column copied successfully.");

Copiar Múltiples Columnas

Similar al método Cells.copyRows, las APIs de Aspose.Cells también proporcionan el método Cells.copyColumns para copiar varias columnas de origen a una nueva ubicación.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(CopyingMultipleColumns.class);
// Create an instance of Workbook class by loading the existing spreadsheet
Workbook workbook = new Workbook(dataDir + "aspose-sample.xlsx");
// Get the cells collection of worksheet by name Columns
Cells cells = workbook.getWorksheets().get("Columns").getCells();
// Copy the first 3 columns 7th column
cells.copyColumns(cells, 0, 6, 3);
// Save the result on disc
workbook.save(dataDir + "output.xlsx");

Así es como se ven las hojas de cálculo de origen y resultado en Excel.

todo:image_alt_text

todo:image_alt_text

Pegar Filas/Columnas con Opciones de Pegado

Aspose.Cells ahora proporciona PasteOptions al usar las funciones CopyRows y CopyColumns. Esto permite establecer las opciones de pegado apropiadas similares a Excel.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// Load some excel file
Workbook wb = new Workbook("book1.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);
// Set PasteOptions
PasteOptions pasteOptions = new PasteOptions();
pasteOptions.setPasteType(PasteType.VALUES);
pasteOptions.setOnlyVisibleCells(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, pasteOptions);
// Save workbook in xlsx format
wb.save("destination.xlsx", SaveFormat.XLSX);