Метод CellRange::moveInto
Метод позволяет переносить (аналог Ctrl+X, Ctrl+V в редакторе таблиц) ячейки текущего диапазона в заданную позицию, представленную параметром типа CellRange. Вы можете переносить ячейки в пределах одного листа, а также между листами и документами.
Данный метод реализован только в табличных документах и позволяет работать только в рамках одного листа документа.
Пример (только для табличного документа)
auto sourceRange = sheetList.getCellRange("A1:B2");
auto destRange = sheetList.getCellRange("C3:D4");
sourceRange.moveInto(destRange);
Пример перемещения ячеек между документами
auto document1 = application.loadDocument("sheet1.xods");
auto document2 = application.loadDocument("sheet2.xods");
boost::optional<Document::Table> tableOpt1 = document1.getBlocks().getTable(0);
boost::optional<Document::Table> tableOpt2 = document2.getBlocks().getTable(0);
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);
}
При перемещении ячеек в качестве новой позиции достаточно указать верхнюю левую ячейку нового диапазона, однако, при необходимости можно продублировать исходный блок ячеек в новом местоположении (см. подробности в разделе CellRange::CopyInto).
Дополнительный пример использования приведен в разделе Копирование ячеек в табличном документе.