Вырезает, копирует и вставляет диапазоны с помощью API JavaScript для Excel
В этой статье приведены примеры кода, которые вырезают, копируют и вставляют диапазоны с помощью API JavaScript для Excel. Полный список свойств и методов, поддерживаемых объектом, см. в Range
разделе Класс Excel.Range.
Примечание.
В API JavaScript для Excel нет объекта или класса Cell. Вместо этого API JavaScript для Excel определяет все ячейки Excel как объекты Range
. Отдельные ячейки в пользовательском интерфейсе Excel преобразуются в объект Range
с одной ячейкой в API JavaScript для Excel. Один объект Range
также может содержать несколько смежных ячеек. Дополнительные сведения см. в статье Работа с ячейками с использованием API JavaScript для Excel.
Совет
Чтобы поэкспериментировать с API-интерфейсами выреза, копирования и вставки из этой статьи в полном примере, откройте лабораторию сценариев в Excel и выберите Копировать и вставить диапазоны в библиотеке примеров .
Copy and paste
Метод Range.copyFrom реплицирует действия копирования и вставки пользовательского интерфейса Excel. Назначение — это Range
объект, который copyFrom
вызывается. Источник для копирования передается как диапазон или адрес строки, представляющий диапазон.
В следующем примере кода копируются данные из A1:E1 в диапазон, начиная с G1 (который заканчивается вставкой в G1:K1).
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getItem("Sample");
// Copy everything from "A1:E1" into "G1" and the cells afterwards ("G1:K1").
sheet.getRange("G1").copyFrom("A1:E1");
await context.sync();
});
У функции Range.copyFrom
есть три необязательных параметра.
copyFrom(sourceRange: Range | RangeAreas | string, copyType?: Excel.RangeCopyType, skipBlanks?: boolean, transpose?: boolean): void;
copyType
указывает, какие данные копируются из источника в назначение.
Excel.RangeCopyType.formulas
передает формулы в исходных ячейках и сохраняет относительное расположение диапазонов этих формул. Все записи, не являющиеся формулами, копируются в исходном виде.Excel.RangeCopyType.values
копирует значения данных, а в случае формул — результат формулы.Excel.RangeCopyType.formats
копирует форматирование диапазона, включая шрифт, цвет и другие параметры форматирования, но без значений.Excel.RangeCopyType.all
(параметр по умолчанию) копирует данные и форматирование, сохраняя формулы ячеек при их обнаружении.
skipBlanks
устанавливает, будут ли копироваться пустые ячейки в назначение. Если значение равно true, copyFrom
пропускает пустые ячейки в диапазоне источника.
Пропущенные ячейки не перезапишут существующие данные в соответствующих им ячейках конечного диапазона. Значение по умолчанию: false.
transpose
определяет, переставляются ли данные в исходное расположение, то есть переключаются ли строки и столбцы.
Переставленный диапазон переключается на главной диагонали, поэтому строки 1, 2 и 3 становятся столбцами A, B и C.
В приведенном ниже примере кода и изображениях демонстрируется это поведение в простом сценарии.
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getItem("Sample");
// Copy a range, omitting the blank cells so existing data is not overwritten in those cells.
sheet.getRange("D1").copyFrom("A1:C1",
Excel.RangeCopyType.all,
true, // skipBlanks
false); // transpose
// Copy a range, including the blank cells which will overwrite existing data in the target cells.
sheet.getRange("D2").copyFrom("A2:C2",
Excel.RangeCopyType.all,
false, // skipBlanks
false); // transpose
await context.sync();
});
Данные перед копированием и вставка диапазона
Данные после копирования и вставки диапазона
Вырезать и вставить (переместить) ячейки
Метод Range.moveTo перемещает ячейки в новое место в книге. Это поведение выполняется так же, как при перемещении ячеек путем перетаскивания границы диапазона или при выполнении действий Вырезать и Вставить . Форматирование и значения диапазона перемещаются в расположение, указанное в destinationRange
качестве параметра.
В следующем примере кода диапазон перемещается с Range.moveTo
помощью метода . Обратите внимание, что если диапазон назначения меньше исходного, он будет расширен для охвата исходного содержимого.
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
sheet.getRange("F1").values = [["Moved Range"]];
// Move the cells "A1:E1" to "G1" (which fills the range "G1:K1").
sheet.getRange("A1:E1").moveTo("G1");
await context.sync();
});
См. также
Office Add-ins