Поделиться через


Вырезает, копирует и вставляет диапазоны с помощью 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();
});

Данные перед копированием и вставка диапазона

Данные в Excel до запуска метода копирования диапазона.

Данные после копирования и вставки диапазона

Данные в Excel после выполнения метода копирования диапазона.

Вырезать и вставить (переместить) ячейки

Метод 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();
});

См. также