Метод CellRange::copyInto
Метод позволяет копировать (аналог Ctrl+C, Ctrl+V в редакторе таблиц) ячейки текущего диапазона в заданную позицию. Вы можете копировать ячейки в пределах одного листа, а также между листами и документами.
Данный метод реализован только в табличных документах, в противном случае возникает исключение NotImplementedError.
Вызов
void copyInto(CellRange destination)
void copyInto(CellRange destination, CellRangePastingSettings pastingSettings)
Параметры
-
destination: целевой диапазон, тип CellRange. -
pastingSettings: (необязательный) параметры копирования, тип CellRangePastingSettings.
Пример
boost::optional<Document::Table> tableOpt = document.getBlocks().getTable(0);
if (tableOpt.has_value())
{
Document::Table sheetList = tableOpt.get();
auto sourceRange = sheetList.getCellRange("A1:B2");
auto destRange = sheetList.getCellRange("C3:D4");
sourceRange.copyInto(destRange);
}
Пример копирования ячеек между листами
auto document = application.loadDocument("sheet.xods");
boost::optional<Document::Table> tableOpt1 = document.getBlocks().getTable(0);
boost::optional<Document::Table> tableOpt2 = document.getBlocks().getTable(1);
if (tableOpt1.has_value() && tableOpt2.has_value())
{
Document::Table sheetList1 = tableOpt1.get();
Document::Table sheetList2 = tableOpt2.get();
auto sourceRange = sheetList1.getCellRange("A1:B2");
auto destRange = sheetList2.getCellRange("C3:D4");
sourceRange.copyInto(destRange);
}
Пример настройки копирования ячеек
Table sheet = document.getBlocks().getTable(0).get();
CellRange sourceRange = sheet.getCellRange("A1:C3");
CellRange destRange = sheet.getCellRange("D4:F6");
CellRangePastingSettings settings = CellRangePastingSettings();
settings.formulasPastingPolicy = FormulasPastingPolicy::AsValues;
settings.stylesPastingPolicy = StylesPastingPolicy::PlainText;
sourceRange.copyInto(destRange, settings);
При копировании ячеек в качестве новой позиции достаточно указать верхнюю левую ячейку нового диапазона, однако если необходимо продублировать исходный блок ячеек, в качестве параметра следует использовать диапазон, превышающий размеры исходного диапазона, но кратный его размерам. Например, при копировании диапазона "A1:B2"(размер 2х2)в диапазон `"B5:E6"`(размер 2х4)блок исходных ячеек продублируется два раза (см. Рисунок).

Дополнительный пример использования приведен в разделе Копирование ячеек в табличном документе.