[]
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");