Saltar al contenido

Cómo copiar una hoja con un nombre diferente: C# y Excel Interop

Hola usuario de nuestro sitio web, hemos encontrado la solución a tu búsqueda, desplázate y la verás más abajo.

Solución:

Puede lograr esto de varias maneras; probablemente la forma más fácil es copiar después de la última hoja y luego cambiarle el nombre usando el índice:

Excel.Application xlApp = Marshal.GetActiveObject("Excel.Application") as Excel.Application;
Excel.Workbook xlWb = xlApp.ActiveWorkbook as Excel.Workbook;
Excel.Worksheet xlSht = xlWb.Sheets[1];
xlSht.Copy(Type.Missing, xlWb.Sheets[xlWb.Sheets.Count]); // copy
xlWb.Sheets[xlWb.Sheets.Count].Name = "NEW SHEET";        // rename

Creo que esta guía de MSDN también responde a su pregunta.

Si desea obtener el índice de una hoja, busque Worksheet.Index propiedad.

Debería poder usar la función Copiar, pero no podrá cambiar el nombre de la hoja en el mismo paso. La documentación de MSDN muestra los parámetros adicionales:

pointName1.Copy(pointName1, Type.Missing); //Place a copy before the existing sheet

De la documentación: si no especifica Antes o Después, Microsoft Office Excel crea un nuevo libro de trabajo que contiene la hoja copiada.

Para cambiar el nombre de la hoja, deberá obtener una referencia a la nueva hoja (por índice o nombre) y usar el Name propiedad de worksheet para cambiar el nombre.

EDITAR:

Si usa el código anterior, puede usar el índice de la hoja original (ya que está colocando la copia antes que el original):

int index = pointName1.Index;
pointName1.Copy(pointName1, Type.Missing);
Worksheet newWS = (Worksheet)xlApp.Worksheets[index];

bueno, otra solución mencionada aquí no funcionó para mí. Tengo esta solución.

Paso 1: Cree una copia del archivo fuente (es decir, TempFile)

Paso 2: Copie la hoja deseada del archivo de origen a TempFile

Paso 3: Eliminar el archivo de origen

Etapa 4: Cambie el nombre de TempFile a Archivo de origen.

Nota: necesitará el paquete “Microsoft.Office.Interop.Excel” de Nuget para esta solución. Además, agregue using Excel = Microsoft.Office.Interop.Excel;

static void Main(string[] args)

    Excel.Application excelApp;

    string sourceFileName = "Original.xlsx"; //Source excel file
    string tempFileName = "temp.xlsx";

    string folderPath = @"C:FodlerPath";

    string sourceFilePath = System.IO.Path.Combine(folderPath, sourceFileName);
    string destinationFilePath = System.IO.Path.Combine(folderPath, tempFileName);

    System.IO.File.Copy(sourceFilePath,destinationFilePath,true);

    /************************************************************************************/

    excelApp = new Excel.Application();
    Excel.Workbook wbSource, wbTarget;
    Excel.Worksheet currentSheet;

    wbSource = excelApp.Workbooks.Open(sourceFilePath);
    wbTarget = excelApp.Workbooks.Open(destinationFilePath); 

    currentSheet = wbSource.Worksheets["Sheet1"]; //Sheet which you want to copy
    currentSheet.Name = "TempSheet"; //Give a name to destination sheet

    currentSheet.Copy(wbTarget.Worksheets[1]); //Actual copy
    wbSource.Close(false);
    wbTarget.Close(true);
    excelApp.Quit();

    System.IO.File.Delete(sourceFilePath);
    System.IO.File.Move(destinationFilePath, sourceFilePath);

valoraciones y comentarios

Recuerda que puedes compartir este tutorial si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *