Estoy intentando 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.Interoperabilidad de Excel: agregue una nueva hoja de trabajo después de todas las demás
Parece muy simple, y pensé que el código de abajo 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 hubo suerte. Me sale este error útil:
COMException was unhandled - Exception from HRESULT: 0x800A03EC
encontré this page en Microsoft.com, que sugirió que probar y añadir la hoja primero y luego muevo así que traté de que, como se muestra a continuación. Sé que esta página web se dirige a Excel VBA 95 pero la administración sigue allí para usar así que esperaba que aún funcionarí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();
workbook.Sheets.Move(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
me sale el mismo error que el anterior. También he intentado pasar el nombre de mi última hoja de cálculo 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 Excel y la hago la última hoja del libro de trabajo usando C# Excel Interop?
Gracias
JMK - no una respuesta a su problema, pero quizás un puntero útil para C# y excel. He estado usando la biblioteca LinqToExcel durante bastante tiempo y realmente no puedo expresar qué tan limpia es una experiencia VS usando la metodología de interoperabilidad. Si tiene tiempo, échele un vistazo para ver si cumple con sus requisitos. https://github.com/paulyoder/LinqToExcel también http://code.google.com/p/linqtoexcel/ –
@jimtollan Gracias por el aviso, haré un punto de revisar LinqToExcel, se ve bien. ¡Gracias! – JMK