# 剪切或复制单元格区域

## Content

GcExcel Java允许用户从特定区域剪切或复制一个单元格或一系列单元格，并将其粘贴到同一工作表中的另一个区域。您还可以选择是否将数据复制并粘贴到工作表中的隐藏区域。想要了解更多，可以参考 [粘贴或在隐藏区域忽略数据](/developer/grapecitydocuments/excel-java/docs/Features/ManageWorksheet/RangeOperations/paste-ignore-data-hidden-range)。
要跨多表单剪切或复制数据，参考[跨工作表剪切或复制](/developer/grapecitydocuments/excel-java/docs/Features/ManageWorksheet/CutOrCopyAcrossSheets)。
要从单元格区域剪切或复制数据，可以参考以下章节。

* [复制单元格区域](/developer/grapecitydocuments/excel-java/docs/Features/ManageWorksheet/RangeOperations/CutOrCopyCellRanges#a)
* [剪切单元格区域](/developer/grapecitydocuments/excel-java/docs/Features/ManageWorksheet/RangeOperations/CutOrCopyCellRanges#b)

### 复制单元格区域

可以通过调用 [IRange](/developer/grapecitydocuments/excel-java/api/com/grapecity/documents/excel/IRange.html) 接口的 [copy](/developer/grapecitydocuments/excel-java/api/com/grapecity/documents/excel/IRange.html#copy) 方法复制一个单元格或者是一片区域。 要复制单个单元格或单元格区域，请指定要复制的单元格区域，例如 **B3:D12**。
GcExcel Java提供了以下不同的方法来使用copy方法。

| **示例** | **描述** |
| --- | --- |
| copy(sheet.getRange["E5"]) | 此方法从单元格区域 **B3:D12** 复制数据并将数据粘贴到**E5** 。 |
| copy(sheet.getRange["E5:G14"]) | 此方法从单元格区域 **B3:D12** 复制数据并将数据粘贴到区域**E5:G14**。 如果复制的单元格区域不符合目标单元格区域，则数据将丢失。 |

要复制工作簿中的单元格区域，请参考以下示例代码：

```Java
// Initialize workbook
Workbook workbook = new Workbook();
        
// Fetch default worksheet
IWorksheet worksheet = workbook.getWorksheets().get(0);

// Set data of PC
worksheet.getRange("A2").setValue("PC");

Object data = new Object[] { "Device", "Quantity", "Unit Price" };
worksheet.getRange("A4:C4").setValue(data);

Object otherData = new Object[][] { 
{ "T540p", 12, 9850 }, { "T570", 5, 7460 }, { "Y460", 6, 5400 },
{ "Y460F", 8, 6240 }, };
worksheet.getRange("A5:C10").setValue(otherData);

// Set style
worksheet.getRange("A2").setRowHeight(30);
worksheet.getRange("A2").getFont().setSize(20);
worksheet.getRange("A2").getFont().setBold(true);
worksheet.getRange("A4:C4").getFont().setBold(true);
worksheet.getRange("A4:C4").getFont().setColor(Color.GetWhite());
worksheet.getRange("A4:C4").getInterior().setColor(Color.GetLightBlue());
worksheet.getRange("A5:C10").getBorders()
.get(BordersIndex.InsideHorizontal).setColor(Color.GetOrange());
worksheet.getRange("A5:C10").getBorders()
.get(BordersIndex.InsideHorizontal)
.setLineStyle(BorderLineStyle.DashDot);

// Copy only style and row height from cells A2:C10
worksheet.getRange("H1").setValue("Copy style and row height from previous cells.");
worksheet.getRange("H1").getFont().setColor(Color.GetRed());
worksheet.getRange("H1").getFont().setBold(true);
worksheet.getRange("A2:C10").copy(worksheet.getRange("H2"), EnumSet.of(PasteType.Formats));

// Set data of mobile devices
worksheet.getRange("H2").setValue("Mobile");
        
// Object data = new Object[] {"Device", "Quantity", "Unit Price" };
worksheet.getRange("H4:J4").setValue(data);

Object otherDataRange = new Object[][] { 
{ "T540p", 12, 9850 }, { "T570", 5, 7460 }, { "Y460", 6, 5400 },
{ "Y460F", 8, 6240 }, };
worksheet.getRange("H5:J10").setValue(otherDataRange);
        
// Add new sheet
IWorksheet worksheet2 = workbook.getWorksheets().add();

// Copy only style of Cell A2:C10 to new sheet
worksheet.getRange("A2:C10")
.copy(worksheet2.getRange("A2"), EnumSet.of(PasteType.Formats));
worksheet2.getRange("A3").setValue("Copy style from sheet1.");
worksheet2.getRange("A3").getFont().setColor(Color.GetRed());
worksheet2.getRange("A3").getFont().setBold(true);

// Saving workbook to xlsx
workbook.save("PasteOptionsEnhancements.xlsx", SaveFileFormat.Xlsx);
```

### 剪切单元格区域

可以调用[IRange](/developer/grapecitydocuments/excel-java/api/com/grapecity/documents/excel/IRange.html) 接口的 [cut](/developer/grapecitydocuments/excel-java/api/com/grapecity/documents/excel/IRange.html#cut) 方法剪切一个单元格或者是单元格区域。 要剪切单元格或单元格区域，请指定要移动的单元格区域，例如 **B3:D12**。
GCExcelJava提供了以下不同的方法来使用cut方法。

| **示例** | **描述** |
| --- | --- |
| cut(sheet.getRange["E5"]) | 此方法从单元格区域**B3:D12**中剪切数据并粘贴到单元格 **E5** 。 |
| cut(sheet.getRange["E5:G14"]) | 此方法从单元格区域**B3:D12**中剪切数据并粘贴到单元格区域 **E5:G14**。 如果剪切的单元格区域不适合目标单元格区域，则数据将丢失。 |

请参考以下示例代码以剪切工作簿中的单元格区域。

```Java
IRange range1 = worksheet2.getRange("E5");
        
// Cut the data of the range of cell
worksheet.getRange("B3:D12").cut(range1);
        
// OR
IRange range1 = worksheet2.getRange("E5;G14");
worksheet.getRange("B3:D12").cut(range1);        
```
