recorrer leer insertar guardar formato escribir ejemplos desde datos dar crear archivo c# excel interop

insertar - leer excel c#



Interoperabilidad de Excel: agregue una nueva hoja de trabajo después de todas las demás (3)

Intento agregar una nueva hoja de trabajo a un libro de Excel y convertirla en la última hoja de cálculo del libro en C # Interoperabilidad de Excel.

Parece realmente simple, y pensé que el siguiente código lo haría:

using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:/test/Test.xlsx"); workbook.Sheets.Add(After: workbook.Sheets.Count); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(excel); } } }

No tal suerte. Obtengo este útil error:

COMException no fue controlada - Excepción de HRESULT: 0x800A03EC

Encontré esta página en Microsoft.com que sugería que intentara agregar la hoja primero y luego moverla, así que lo intenté como se muestra a continuación. Sé que esta página web se dirige a Excel 95 pero el VBA aún está ahí para usar, así que esperaba que aún funcionara:

using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { var excel = new Excel.Application(); var workbook = excel.Workbooks.Open(@"C:/test/Test.xlsx"); workbook.Sheets.Add(); workbook.Sheets.Move(After: workbook.Sheets.Count); workbook.Save(); workbook.Close(); Marshal.ReleaseComObject(excel); } } }

Recibo el mismo error que el anterior. También he intentado pasar el nombre de mi última hoja de trabajo como una cadena como el parámetro After en los métodos Add y Move , ¡no me gusta!

Eso es lo que he intentado, entonces mi pregunta es ¿cómo agrego una hoja de trabajo a un libro de trabajo de Excel y la hago la última hoja en el libro de trabajo usando C # Interoperación de Excel?

Gracias


Esto debería hacer el trabajo:

wSheet.Move(Missing.Value, workbook.Sheets[workbook.Sheets.Count]);



Esta es la única forma que funciona para mí:

xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.Add (System.Reflection.Missing.Value, xlWorkBook.Worksheets[xlWorkBook.Worksheets.Count], System.Reflection.Missing.Value, System.Reflection.Missing.Value);