ASP.NET - Cómo copiar rango de celdas a portapapeles

 
Vista:
sin imagen de perfil

Cómo copiar rango de celdas a portapapeles

Publicado por Leonardo Josué (52 intervenciones) el 29/09/2008 22:30:14
Buenas Tardes:

Estoy utilizando los Ensamblados de interoperabilidad primarios de Office (Microsoft.Office.Interop.Excel.dll) con C# para la manipulación de archivos de excel desde ASP.NET.

Lo que necesito hacer es copiar un rango de celdas de un archivo de excel para copiarlos dentro de otro excel nuevo:

EJEMPLO:

Tengo un archivo de excel C:ArchivosExcelPrueba.xlsx con la siguiente estructura:

A B C D
1 Leonardo 23 24.234 fg123
2 Joseph 25 26.342 hj451
3 Mario 45 44.123 hh642
4 Marco 32 15.231 jr145
5 Samantha 69 69.154 io243
6 Vianey 69 14.217 gf147

Necesito copiar al portapapeles un rango que comprenda los renglones 3, 4 y 5 del archivo para a su vez copiar estas celdas a un nuevo archivo de excel. Tengo algo como esto:

Excel.Application APexcel, oXL;
Excel.Workbook Libro, oWB;
Excel.Worksheet Hoja, oSheet;
Excel.Range Rango, Rango2;
//Abro mi archivo de Excel y me posiciono en la hoja de datos activa.
Libro = APexcel.Workbooks.Open("C:ArchivosExcelPrueba.xlsx", Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
APexcel.Visible = false;
Hoja = (Excel.Worksheet)Libro.ActiveSheet;
//Creo el rango de celdas que quiero copiar.
Rango = Hoja.get_Range("A1", "D5");

/*Hasta aquí al parecer todo está correcto, pero a partir de aquí ya no funciona bien*/

Rango.Copy(); //<- Aquí marca un error, porque dice que necesita un parámetro
//La docomentación del método dice que si se omite el parámetro las celdas se copian al
//portapapeles

//Creo el archivo destino, donde voy a pegar las celdas copiadas
oXL = new Excel.Application();
oXL.Visible = false;
//Get a new workbook.
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
// Me posiciono en la celda A1 de mi nuevo documento
Rango2 = oSheet.get_Range("A1", Type.Missing);
Rango.Pastespecial();//Pego las celdas en el documento...

Espero que alguien de ustedes me pueda decir dónde está mi error.

Saludos de antemano
Leo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder