2010-06-07 8 views
0

Je tente ce qui me semble être une tâche simple: utiliser C# pour créer un nouveau document Excel contenant de nouvelles feuilles de calcul.Excel Automation From .NET - création d'une nouvelle feuille de travail

Pour une raison quelconque, je reçois une erreur de COM étrange (0x800A03EC)

Quelqu'un at-il réussi à obtenir ce travail? Est-ce que quelqu'un a des suggestions sur la façon de résoudre ce problème?

J'ai isolé ce dans le montant minimum de code:

using Microsoft.Office.Interop.Excel; 
using System.Diagnostics; 

namespace ExcelAutomation 
{ 
    public static class ExcelTests 
    { 
     public static void CreateWorksheet() 
     { 
      try 
      { 
       var app = new Microsoft.Office.Interop.Excel.Application(); 
       app.Visible = true; 
       var workBooks = app.Workbooks; 
       var newWorkbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
       Worksheet existingWorksheet = (Worksheet)newWorkbook.Sheets[1]; 

       Worksheet workSheet = (Worksheet)newWorkbook.Sheets.Add 
         (
          null, // before 
          existingWorksheet, 
          null, // 1, 
          null //XlSheetType.xlWorksheet 
         ); 
      } 
      catch (System.Runtime.InteropServices.COMException ex) 
      { 
       Trace.WriteLine(string.Format("Caught COMException. Message: \"{0}\"", ex.Message)); 
      } 
     } 
    } 
} 

La fenêtre de sortie dit maintenant:

Pris COMException. Message: "Exception de HRESULT: 0x800A03EC"

Répondre

1

L'erreur que je fais est d'utiliser null pour les valeurs facultatives que je ne veux pas définir.

Au lieu de cela je devrais utiliser System.Reflection.Missing.Value

 Worksheet workSheet = (Worksheet)newWorkbook.Sheets.Add 
       (
        existingWorksheet, // before 
        System.Reflection.Missing.Value, 
        System.Reflection.Missing.Value, // 1, 
        System.Reflection.Missing.Value //XlSheetType.xlWorksheet 
       ); 
Questions connexes