Copiatura di righe e colonne
Introduzione
A volte è necessario copiare righe e colonne in un foglio di lavoro senza copiare l’intero foglio di lavoro. Con Aspose.Cells, è possibile copiare righe e colonne all’interno o tra i fogli di lavoro.
Quando viene copiata una riga (o colonna), vengono copiati anche i dati contenuti al suo interno, inclusi formule - con riferimenti aggiornati - e valori, commenti, formattazione, celle nascoste, immagini e altri oggetti grafici.
Copiatura di righe e colonne con Microsoft Excel
- Seleziona la riga o la colonna che desideri copiare.
- Per copiare righe o colonne, fai clic su Copia sulla barra degli strumenti Standard, oppure premi CTRL+C.
- Seleziona una riga o una colonna sotto o alla destra di dove desideri copiare la tua selezione.
- Quando stai copiando righe o colonne, fai clic su Celle Copiate nel menu Inserisci.
Copia di una singola riga
Aspose.Cells fornisce il metodo copyRow della classe Cells. Questo metodo copia tutti i tipi di dati inclusi formule, valori, commenti, formati di celle, celle nascoste, immagini e altri oggetti grafici dalla riga di origine alla riga di destinazione.
Il metodo copyRow richiede i seguenti parametri:
- l’oggetto Cells di origine,
- l’indice della riga di origine e
- l’indice della riga di destinazione.
Usa questo metodo per copiare una riga all’interno di un foglio, o verso un altro foglio. Il metodo copyRow funziona in modo simile a Microsoft Excel. Quindi, ad esempio, non è necessario impostare esplicitamente l’altezza della riga di destinazione, tale valore viene copiato anche.
Nell’esempio seguente viene mostrato come copiare una riga in un foglio di lavoro. Utilizza un file modello di Microsoft Excel e copia la seconda riga (completa di dati, formattazione, commenti, immagini e così via) e la incolla nella dodicesima riga nello stesso foglio di lavoro.
// 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."); |
L’output seguente viene generato quando il codice sottostante viene eseguito.
La riga viene copiata con il massimo grado di precisione e accuratezza
Quando si copiano le righe, è importante notare immagini correlate, grafici o altri oggetti disegnati poiché è lo stesso con Microsoft Excel:
- Se l’indice della riga di origine è 5, l’immagine, il grafico, ecc., vengono copiati se sono contenuti nelle tre righe (l’indice della riga di inizio è 4 e l’indice della riga di fine è 6).
- Le immagini, i grafici, ecc., esistenti nella riga di destinazione non verranno rimossi.
Copia di più righe
È inoltre possibile copiare più righe su una nuova destinazione utilizzando il metodo Cells.copyRows che richiede un parametro aggiuntivo di tipo integer per specificare il numero di righe di origine da copiare.
Di seguito è presentato uno snapshot del foglio di calcolo di input contenente 3 righe di dati, mentre il frammento di codice fornito di seguito copia tutte e 3 le righe in una nuova posizione a partire dalla 7ª riga.
// 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"); |
Ecco la visualizzazione del foglio di calcolo risultante dopo l’esecuzione del frammento di codice sopra.
Copia di una singola colonna
Aspose.Cells fornisce il metodo copyColumn della classe Cells, questo metodo copia tutti i tipi di dati, inclusi formule - con riferimenti aggiornati - e valori, commenti, formati delle celle, celle nascoste, immagini ed altri oggetti disegnati dalla colonna di origine a quella di destinazione.
Il metodo copyColumn accetta i seguenti parametri:
- l’oggetto Cells di origine,
- l’indice della colonna di origine e
- l’indice della colonna di destinazione.
Usa il metodo copyColumn per copiare una colonna all’interno di un foglio, o verso un altro foglio.
Questo esempio copia una colonna da un foglio di lavoro e la incolla in un foglio di lavoro in un altro documento.
Viene copiata una colonna da un altro foglio di lavoro
// 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."); |
Copia di più colonne
Similmente al metodo Cells.copyRows, le API di Aspose.Cells forniscono anche il metodo Cells.copyColumns per copiare più colonne di origine in una nuova posizione.
// 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"); |
Ecco come si presentano i fogli di calcolo di origine e risultante in Excel.
Incollaggio di righe/colonne con opzioni di incolla
Aspose.Cells fornisce ora PasteOptions durante l’utilizzo delle funzioni CopyRows e CopyColumns. Consente di impostare opportune opzioni di incolla simili 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); |