Kopiera rader och kolumner
Introduktion
Ibland behöver du kopiera rader och kolumner i en arbetsbok utan att kopiera hela arbetsboken. Med Aspose.Cells är det möjligt att kopiera rader och kolumner inom eller mellan arbetsböcker.
När en rad (eller kolumn) kopieras, kopieras också den data som finns i den, inklusive formler - med uppdaterade referenser - och värden, kommentarer, formatering, dolda celler, bilder och andra ritobjekt.
Kopiera rader och kolumner med Microsoft Excel
- Markera raden eller kolumnen som du vill kopiera.
- För att kopiera rader eller kolumner, klicka på Kopiera på Standard verktygsfältet, eller tryck på CTRL+C.
- Välj en rad eller en kolumn nedanför eller till höger om där du vill kopiera ditt val.
- När du kopierar rader eller kolumner, klicka på Kopierade celler på menyn Infoga.
Kopiera enstaka rad
Aspose.Cells tillhandahåller copyRow metoden från Cells klassen. Denna metod kopierar alla typer av data inklusive formler, värden, kommentarer, cellformat, dolda celler, bilder och andra ritobjekt från källraden till destinationsraden.
Metoden copyRow tar följande parametrar:
- käll Cells objekt,
- källradens index, och
- destinationsradens index.
Använd denna metod för att kopiera en rad inom ett blad, eller till ett annat blad. copyRow metoden fungerar på ett liknande sätt som Microsoft Excel. Så, till exempel, behöver du inte sätta höjden på destinationsraden explcit, det värdet kopieras också.
Följande exempel visar hur man kopierar en rad i en arbetsbok. Det använder en mall Microsoft Excel-fil och kopierar den andra raden (komplett med data, formatering, kommentarer, bilder och så vidare) och klistrar in den i den 12:e raden i samma arbetsbok.
// 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."); |
Följande utdata genereras när koden nedan körs.
Raderna kopieras med högsta möjliga precision och noggrannhet
Vid kopiering av rader är det viktigt att notera relaterade bilder, diagram eller andra ritobjekt eftersom detta är detsamma med Microsoft Excel:
- Om källradens index är 5, kopieras bilden, diagrammet osv. om den finns i de tre raderna (startindexet är 4 och slutindexet är 6).
- De befintliga bilderna, diagrammen osv. i destinationsraden kommer inte att tas bort.
Kopiera flera rader
Du kan också kopiera flera rader till en ny destination samtidigt som du använder Cells.copyRows-metoden som tar en ytterligare parameter av typ integer för att ange antalet källrader som ska kopieras.
Här är en ögonblicksbild av den inmatade kalkylarket som innehåller 3 rader med data medan kodsnutten nedan kopierar alla 3 rader till en ny plats som startar från den 7: e raden.
// 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"); |
Här är den resulterande kalkylarksvisningen efter att ha kört kodsnutten ovan.
Kopiera enstaka kolumn
Aspose.Cells tillhandahåller copyColumn metoden i Cells klassen, denna metod kopierar alla typer av data, inklusive formler - med uppdaterade referenser - och värden, kommentarer, cellformat, dolda celler, bilder och andra ritobjekt från källkolumnen till destinationskolumnen.
copyColumn metoden tar följande parametrar:
- käll Cells objekt,
- källkolumnens index och
- destinationskolumnens index.
Använd copyColumn metoden för att kopiera en kolumn i en kalkylblad eller till ett annat kalkylblad.
Detta exempel kopierar en kolumn från ett blad och klistrar in den i ett blad i en annan arbetsbok.
En kolumn kopieras från en arbetsbok till en annan
// 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."); |
Kopiera flera kolumner
På liknande sätt som Cells.copyRows-metoden tillhandahåller också Aspose.Cells API:er metoden Cells.copyColumns för att kopiera flera källkolumner till en ny plats.
// 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"); |
Så här ser käll- och resulterande kalkylarken ut i Excel.
Klistra in rader/kolumner med klistralternativ
Aspose.Cells tillhandahåller nu PasteOptions när du använder funktioner CopyRows och CopyColumns. Det tillåter att ställa in lämpliga klistralternativ liknande 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); |