Sto tentando di aggiungere un nuovo foglio di lavoro a una cartella di lavoro di Excel e rendere questo l'ultimo foglio di lavoro nel libro in C# Interop di Excel.Interoperabilità di Excel - Aggiungere un nuovo foglio dopo tutti gli altri
Sembra davvero semplice, e ho pensato che il codice qui sotto lo farebbe:
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);
}
}
}
Niente da fare. Ottengo questo errore utile:
COMException was unhandled - Exception from HRESULT: 0x800A03EC
ho trovato this page su Microsoft.com, che mi suggerì di provare e aggiungi il foglio e poi spostarlo in modo che ho provato come illustrato di seguito. So che il sito si rivolge a Excel 95, ma il VBA è ancora lì da usare quindi speravo che sarebbe ancora funzionare:
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);
}
}
}
ottengo lo stesso errore come sopra. Ho anche provato a passare il nome del mio ultimo foglio di lavoro come una stringa come il parametro After
in entrambi i metodi Add
e Move
, nessuna gioia!
Questo è quello che ho provato, quindi la mia domanda è come posso aggiungere un foglio di lavoro a una cartella di lavoro di Excel e rendere questo l'ultimo foglio della cartella di lavoro utilizzando C# Interop di Excel?
Grazie
JMK - non una risposta al tuo problema ma forse un utile puntatore per C# ed excel. Ho usato la libreria LinqToExcel per un bel po 'di tempo e davvero non posso esprimere quanto sia più pulita un'esperienza VS utilizzando la metodologia di interoperabilità. Se hai tempo, dai un'occhiata per vedere se è adatto alle tue esigenze. https://github.com/paulyoder/LinqToExcel anche http://code.google.com/p/linqtoexcel/ –
@jimtollan Grazie per l'attenzione, farò il punto su LinqToExcel, sembra buono. Grazie! – JMK