[]
        
(Showing Draft Content)

粘贴时忽略隐藏区域中的数据

GcExcel允许您选择是否在隐藏区域复制和粘贴数据。重载的copy方法的参数可用于指定复制文件的目的地、需要粘贴数据、是否粘贴隐藏范围内的数据以及各种粘贴类型。

copy方法的pasteOption参数属于pasteOption类。此类提供了setAllowPasteHiddenRange方法,如果为true,则将隐藏区域中的数据粘贴到目标,否则将忽略隐藏区域。默认值为true。

PasteOption类还提供了PasteType属性,可通过将其设置为任何PasteType枚举值来指定各种粘贴类型。

下表列出了可用于使用PasteType枚举指定粘贴类型的不同选项:

选项

描述

默认值

将除行高和列宽之外的所有单元格数据粘贴到目标范围

Values

粘贴值

Formulas

如果您在公式单元格中工作;它将公式粘贴到目标。但是,对于非公式单元格,它会将单元格值粘贴到目标。

Formats

粘贴格式

NumberFormats

粘贴数据格式

RowHeights

粘贴行高

ColumnWidths

粘贴列宽

用户还可以组合两种不同的粘贴选项。例如,如果用户希望在工作表中同时粘贴值和数字格式,则可以使用以下组合:

PasteType.Values, PasteType.NumberFormats
PasteType.Formulas, PasteType.NumberFormats

类似地,其他粘贴选项也可以相互组合。

参考以下示例代码以忽略并粘贴隐藏区域中的数据。

//create a new workbook
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);

Object[][] data = new Object[][]{
{"Name", "City", "Birthday", "Eye color", "Weight", "Height"},
{"Richard", "New York", new GregorianCalendar(1968, 6, 8), "Blue", 67, 165},
{"Nia", "New York", new GregorianCalendar(1972, 7, 3), "Brown", 62, 134},
{"Jared", "New York", new GregorianCalendar(1964, 3, 2), "Hazel", 72, 180},
{"Natalie", "Washington", new GregorianCalendar(1972, 8, 8), "Blue", 66, 163},
{"Damon", "Washington", new GregorianCalendar(1986, 2, 2), "Hazel", 76, 176},
{"Angela", "Washington", new GregorianCalendar(1993, 2, 15), "Brown", 68, 145}
};

worksheet.getRange("A1:F7").setValue(data);
worksheet.getRange("A:F").setColumnWidth(15);

//Weight less than 80.
worksheet.getRange("A1:F7").autoFilter(4, "<72");

//Copy range and ignore hidden range.
IWorksheet worksheet2 = workbook.getWorksheets().add();
PasteOption pasteOption = new PasteOption();
pasteOption.setAllowPasteHiddenRange(false);
worksheet.getRange("A1:F7").copy(worksheet2.getRange("A1:F7"), pasteOption);

//Copy range and contain hidden range.
IWorksheet worksheet3 = workbook.getWorksheets().add();
worksheet.getRange("A1:F7").copy(worksheet3.getRange("A1:F7"));
        
//Ignore pasting data in hidden range and use PasteType options
IWorksheet worksheet4 = workbook.getWorksheets().add();
PasteOption pasteOption2 = new PasteOption();
pasteOption2.setAllowPasteHiddenRange(false);
pasteOption2.getPasteType().add(PasteType.ColumnWidths);
pasteOption2.getPasteType().add(PasteType.Values);
worksheet.getRange("A1:F6").copy(worksheet4.getRange("A1:F7"), pasteOption2);

//save to an excel file
workbook.save("CopyAndIgnoreHiddenRange.xlsx");