Cortar, copiar e colar intervalos com a API JavaScript do Excel
Este artigo fornece exemplos de código que cortam, copiam e colam intervalos com a API JavaScript do Excel. Para obter a lista completa de propriedades e métodos suportados pelo Range
objeto, consulte Excel.Range class (Classe Excel.Range).
Observação
A API JavaScript do Excel não tem um objeto ou classe "Célula". Em vez disso, a API JavaScript do Excel define todas as células do Excel como objetos Range
. Uma célula individual na interface do usuário do Excel se traduz em um objeto Range
com uma célula na API JavaScript do Excel. Um único objeto Range
também pode conter várias células contíguas. Confira Trabalhar com células usando a API JavaScript do Excel para saber mais.
Dica
Para experimentar as APIs cortar, copiar e colar deste artigo num exemplo completo, abra o Laboratório de Scripts no Excel e selecione Copiar e colar intervalos na nossa biblioteca de Exemplos .
Copy and paste
O método Range.copyFrom replica as ações Copiar e Colar da IU do Excel. O destino é o Range
objeto que copyFrom
é chamado. A fonte a ser copiada é passada como um intervalo ou um endereço de cadeia de caracteres que representa um intervalo.
O exemplo a seguir copia dados de A1:E1 para o intervalo que começa em G1 (que acaba sendo colado em 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
tem três parâmetros opcionais.
copyFrom(sourceRange: Range | RangeAreas | string, copyType?: Excel.RangeCopyType, skipBlanks?: boolean, transpose?: boolean): void;
copyType
especifica quais dados são copiados da origem para o destino.
Excel.RangeCopyType.formulas
transfere as fórmulas nas células de origem e preserva o posicionamento relativo dos intervalos dessas fórmulas. As entradas que não sejam uma fórmula são copiadas no seu estado original.Excel.RangeCopyType.values
copia os valores dos dados e, no caso de fórmulas, o resultado da fórmula.Excel.RangeCopyType.formats
copia a formatação do intervalo incluindo a fonte, cor e outras configurações de formato, mas nenhum valor.Excel.RangeCopyType.all
(a opção predefinida) copia dados e formatação, preservando as fórmulas das células, se forem encontradas.
skipBlanks
define se as células em branco são copiadas para o destino. Quando for verdadeiro, copyFrom
ignora células em branco no intervalo de origem.
As células ignoradas não substituem os dados existentes de suas células correspondentes no intervalo de destino. O padrão é false.
transpose
determina se os dados são transpostos, ou seja, suas linhas e colunas são alternadas para o local de origem.
Um intervalo transposto invertido na diagonal principal, portanto as linhas 1, 2 e 3 se tornarão as colunas A, B e C.
O exemplo de código e as imagens a seguir demonstram esse comportamento em um cenário simples.
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();
});
Dados antes de o intervalo ser copiado e colado
Os dados após o intervalo são copiados e colados
Cortar e colar (mover) células
O método Range.moveTo move as células para uma nova localização no livro. Este comportamento de movimento de células funciona da mesma forma que quando as células são movidas ao arrastar o limite do intervalo ou ao efetuar as ações Cortar e Colar . Tanto a formatação como os valores do intervalo são movidos para a localização especificada como o destinationRange
parâmetro .
O seguinte exemplo de código move um intervalo com o Range.moveTo
método . Tenha em atenção que, se o intervalo de destino for inferior à origem, será expandido para abranger o conteúdo de origem.
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();
});