Como Copiar Células em Planilha Excel com C# e IronXL
O IronXL permite copiar células, intervalos, linhas ou colunas ao editar planilha Excel usando um único método Copy que preserva toda formatação e estilo ao duplicar dados entre quaisquer locais ou planilhas.
O recurso "Copiar célula" duplica o conteúdo da célula e cola em outras células. Ele replica dados, fórmulas, formatação e outros atributos dentro da planilha. Whether creating spreadsheets from scratch or loading existing Excel files, the copy functionality is essential for efficient data manipulation.
Início Rápido: Copie uma Coluna ou Intervalo em Uma Linha
Copie intervalos inteiros — células únicas, linhas, colunas ou blocos — de uma planilha para outra usando uma chamada de método. A função Copy retém o estilo e a formatação enquanto torna a automação do Excel rápida e simples.
-
Instale IronXL com o Gerenciador de Pacotes NuGet
PM > Install-Package IronXL.Excel -
Copie e execute este trecho de código.
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronXL em seu projeto hoje com uma avaliação gratuita
- Baixe a biblioteca C# para copiar células
- Carregar a planilha do Excel existente
- Selecione o intervalo, a linha ou a coluna que deseja copiar.
- Invoke the `Copy` method on the selected range
- Pass a destination worksheet and position to the `Copy` method
Como Copio uma Única Célula no Excel?
Para copiar o conteúdo de uma célula selecionada, use o método Copy. Passe o objeto planilha como o primeiro parâmetro e a posição inicial como o segundo parâmetro. The Copy method retains all styling including font and size, background patterns and colors, and borders and alignment.
:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-single-cell.cs
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet1"), "B3")
workBook.SaveAs("copySingleCell.xlsx")
Quais Formatações São Preservadas ao Copiar?
O método Copy preserva todas as propriedades da célula, incluindo:
- valores e fórmulas
Cell - Formatos de número (moeda, percentual, datas)
- Estilo de fonte (tipo, tamanho, negrito, itálico, cor)
- Bordas de célula e cores de fundo
- Alinhamento de texto (horizontal e vertical)
- Configurações de proteção de célula
Esta preservação abrangente garante que as células copiadas mantenham sua aparência e funcionalidade originais, semelhante ao uso de Ctrl+C e Ctrl+V no Microsoft Excel.
Por Que o Método de Cópia Exige Dois Parâmetros?
O método Copy requer dois parâmetros para controle preciso:
- Parâmetro de Planilha: Especifica a planilha de destino (mesma ou diferente dentro do livro de trabalho)
- Parâmetro de Endereço: Define a posição inicial da célula para conteúdo colado
Este design permite a cópia flexível dentro da mesma planilha ou em diferentes planilhas, ideal para a criação de relatórios de resumo ou consolidação de dados de várias fontes.
Quando Devo Usar Cópia de Célula Única vs Cópia de Intervalo?
Escolha cópia de célula única quando:
- Duplicando valores individuais ou fórmulas
- Copiando células de cabeçalho ou rótulos
- Replicando resultados calculados específicos
- Trabalhando com valores de resumo
Use a cópia de intervalo quando:
- Mover tabelas de dados inteiras
- Duplicar múltiplas células relacionadas
- Copiar linhas ou colunas completas
- Preservar relações de dados
Como Posso Copiar Múltiplas Células ou Intervalos?
Like the Clear method, Copy is available in the Range class, allowing execution on any range size. When selecting ranges, IronXL provides flexible copying options:
-
Copiar uma única célula (
C10):workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")$vbLabelText $csharpLabel -
Copiar uma coluna (
A):workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")$vbLabelText $csharpLabel -
Copiar uma linha (
4):workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")$vbLabelText $csharpLabel -
Copiar um intervalo bidimensional (
D6:F8):workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")$vbLabelText $csharpLabel
:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-cell-range.cs
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy a single cell(C10)
workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")
' Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")
' Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")
' Copy a two-dimensional range(D6:F8)
workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")
workBook.SaveAs("copyCellRange.xlsx")
O Que Acontece Quando o Intervalo de Destino É Muito Pequeno?
IronXL lida automaticamente com diferenças de tamanho:
- O parâmetro de destino especifica apenas a célula inicial superior esquerda
- Todo o intervalo de origem é copiado independentemente do tamanho do destino
- Dados existentes na área de destino são sobrescritos
- A operação de cópia se expande para acomodar todos os dados de origem
Por exemplo, copiar um intervalo 3x3 para a célula B1 preenche as células B1:D3, sobrescrevendo qualquer conteúdo existente.
Como Funcionam as Referências de Linhas e Colunas?
O IronXL usa indexação baseada em zero para linhas e colunas com os métodos GetRow() e GetColumn():
GetColumn(0)refere-se à coluna AGetColumn(1)refere-se à coluna BGetRow(0)refere-se à linha 1GetRow(3)refere-se à linha 4
Esta indexação está alinhada com as convenções padrão de arrays C#.
Por Que Usar os Métodos GetColumn() e GetRow()?
Os métodos GetColumn() e GetRow() oferecem:
- Desempenho: Mais eficiente para linhas ou colunas inteiras
- Clareza: Torna a intenção do código mais clara
- Flexibilidade: Retorna um objeto
Rangeque suporta todas as operações de intervalo - Conveniência: Não é necessário calcular células finais para seleções completas
Esses métodos se destacam ao criar relatórios que exigem cópias de colunas completas ou ao duplicar modelos de linha.
Como Posso Copiar Células Entre Diferentes Planilhas?
O primeiro parâmetro aceita um objeto de planilha, permitindo copiar e colar entre diferentes planilhas. Passe um objeto de planilha diferente como o primeiro parâmetro. This functionality proves essential when managing multiple worksheets or creating summary sheets from detailed data.
workBook.GetWorksheet("Sheet2"):path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-to-other-worksheet.cs
using IronXL;
WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");
// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");
// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");
// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");
workBook.SaveAs("crossSheetCopy.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet2"), "B3");
workBook.SaveAs("copyAcrossWorksheet.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");
// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");
// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");
// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");
workBook.SaveAs("crossSheetCopy.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet2"), "B3")
workBook.SaveAs("copyAcrossWorksheet.xlsx")
Dim workBook2 As WorkBook = WorkBook.Load("multisheet.xlsx")
Dim sheet1 As WorkSheet = workBook2.GetWorkSheet("Sheet1")
Dim sheet2 As WorkSheet = workBook2.GetWorkSheet("Sheet2")
' Copy entire data range from Sheet1 to Sheet2
sheet1("A1:D10").Copy(sheet2, "A1")
' Copy with formulas intact
sheet1("E1:E10").Copy(sheet2, "F1")
' Copy formatting from template sheet
Dim templateSheet As WorkSheet = workBook2.GetWorkSheet("Template")
templateSheet("A1:Z1").Copy(sheet2, "A15")
workBook2.SaveAs("crossSheetCopy.xlsx")
Quais São os Cenários Comuns de Cópia Entre Planilhas?
A cópia entre planilhas frequentemente serve para estes cenários:
- Criando Folhas Resumo: Copiar métricas-chave das folhas de detalhe para dashboards
- Replicação de Modelos: Copiar modelos formatados para novas planilhas
- Consolidação de Dados: Reunir dados de planilhas departamentais para planilhas principais
- Geração de Relatórios: Copiar resultados filtrados para planilhas de relatórios separadas
- Operações de Backup: Duplicar dados críticos em planilhas de backup
When working with formulas that reference other cells, IronXL automatically adjusts relative references based on the new location while maintaining absolute references.
Quando Devo Copiar para uma Nova Planilha vs Existente?
Copie para uma nova planilha quando:
- Criando relatórios periódicos (diários, semanais, mensais)
- Isolando dados processados de dados brutos
- Construindo planilhas de análise a partir de dados de origem
- Gerando visualizações de dados específicas para o usuário
Copiar para uma planilha existente quando:
- Adicionando dados a logs em andamento
- Atualizando seções de painéis
- Consolidando múltiplas fontes de dados
- Mantendo registros históricos
For complex scenarios involving multiple sheets, consider using IronXL's ability to work with DataSets and DataTables for sophisticated data manipulation.
Como lidar com conflitos de nomes de planilhas?
Garanta o gerenciamento adequado das planilhas ao copiar entre planilhas:
// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
workBook.CreateWorkSheet("TargetSheet");
}
// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
workBook.CreateWorkSheet("TargetSheet");
}
// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
' Check if worksheet exists before copying
If workBook.GetWorkSheet("TargetSheet") Is Nothing Then
workBook.CreateWorkSheet("TargetSheet")
End If
' Safe copy operation
Dim targetSheet As WorkSheet = workBook.GetWorkSheet("TargetSheet")
sourceSheet("A1:Z100").Copy(targetSheet, "A1")
Essa abordagem previne erros de tempo de execução e garante operações de cópia bem-sucedidas, especialmente importante ao automatizar processos do Excel em ambientes de produção.
Perguntas frequentes
Como faço para copiar uma única célula no Excel usando C#?
Com o IronXL, você pode copiar uma única célula usando o método Copy. Basta selecionar a célula que deseja copiar (por exemplo, workSheet["A1"]) e chamar o método Copy, passando a planilha de destino e o endereço da célula de destino como parâmetros. O IronXL preserva toda a formatação, incluindo fontes, cores, bordas e fórmulas, durante a operação de cópia.
Que formatação é preservada ao copiar células?
O método Copiar do IronXL preserva todas as propriedades das células, incluindo valores e fórmulas, formatos de número (moeda, porcentagem, datas), estilo da fonte (tipo, tamanho, negrito, itálico, cor), bordas e cores de fundo, alinhamento do texto (horizontal e vertical) e configurações de proteção. Isso garante que as células copiadas mantenham sua aparência e funcionalidade originais.
Posso copiar colunas ou intervalos inteiros de uma só vez?
Sim, o IronXL permite copiar colunas, linhas ou intervalos inteiros em uma única operação. Você pode usar métodos como GetColumn(0).Copy() para copiar uma coluna inteira ou selecionar um intervalo de células para copiar várias células de uma só vez. O método Copy funciona com qualquer tamanho de seleção, desde células individuais até planilhas inteiras.
Como faço para copiar células entre planilhas diferentes?
O IronXL facilita a cópia de células entre planilhas. Ao usar o método Copy, especifique a planilha de destino como o primeiro parâmetro (por exemplo, workBook.GetWorkSheet("Sheet2")) e o endereço da célula de destino como o segundo parâmetro. Isso permite copiar dados entre diferentes planilhas dentro da mesma pasta de trabalho.
Quais são os passos mínimos necessários para copiar células no Excel?
Com o IronXL, copiar células requer apenas 5 passos: 1) Baixe a biblioteca IronXL C#, 2) Carregue sua planilha Excel existente, 3) Selecione o intervalo, linha ou coluna que deseja copiar, 4) Invoque o método Copy no intervalo selecionado e 5) Passe uma planilha de destino e a posição para o método Copy. Toda a operação pode ser feita em uma única linha de código.

