Skip to main content

Метод 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)блок исходных ячеек продублируется два раза (см. Рисунок).

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