<p>I am just starting to fiddle with Excel via C# to be able to automate the creation, and addition to an Excel file.</p>

<p>I can open the file and update its data and move through the existing worksheets. My problem is how can I add new sheets?</p>

<p>I tried:</p>

<pre><code>Excel.Worksheet newWorksheet;
newWorksheet = (Excel.Worksheet)excelApp.ThisWorkbook.Worksheets.Add(
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);
</code></pre>

<p>But I get below <em>COM Exception</em> and my googling has not given me any answer.</p>

<blockquote>
  <p>Exception from HRESULT: 0x800A03EC Source is: "Interop.Excel"</p>
</blockquote>

<p>I am hoping someone maybe able to put me out of my misery.</p>

You need to add a COM reference in your project to the
"
```
Microsoft Excel 11.0 Object Library
```
"
- or whatever version is appropriate.
This code works for me:
```
```
private void AddWorksheetToExcelWorkbook(string fullFilename,string worksheetName)
{
    Microsoft.Office.Interop.Excel.Application xlApp = null;
    Workbook xlWorkbook = null;
    Sheets xlSheets = null;
    Worksheet xlNewSheet = null;

    try {
        xlApp = new Microsoft.Office.Interop.Excel.Application();

        if (xlApp == null)
            return;

        // Uncomment the line below if you want to see what's happening in Excel
        // xlApp.Visible = true;

        xlWorkbook = xlApp.Workbooks.Open(fullFilename, 0, false, 5, "", "",
                false, XlPlatform.xlWindows, "",
                true, false, 0, true, false, false);

        xlSheets = xlWorkbook.Sheets as Sheets;

        // The first argument below inserts the new worksheet as the first one
        xlNewSheet = (Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing);
        xlNewSheet.Name = worksheetName;

        xlWorkbook.Save();
        xlWorkbook.Close(Type.Missing,Type.Missing,Type.Missing);
        xlApp.Quit();
    }
    finally {
        Marshal.ReleaseComObject(xlNewSheet);
        Marshal.ReleaseComObject(xlSheets);
        Marshal.ReleaseComObject(xlWorkbook);
        Marshal.ReleaseComObject(xlApp);
        xlApp = null;
    }
}
```
```
Note that you want to be very careful about
properly cleaning up and releasing your COM object references
. Included in that StackOverflow question is a useful rule of thumb:
"Never use 2 dots with COM objects"
. In your code; you're going to have real trouble with that.
My demo code above does NOT properly clean up the Excel app, but it's a start!
Some other links that I found useful when looking into this question:
Opening and Navigating Excel with C#
How to: Use COM Interop to Create an Excel Spreadsheet (C# Programming Guide)
How to: Add New Worksheets to Workbooks
According to MSDN
To use COM interop, you must have
  administrator or Power User security
  permissions.
Hope that helps.