Petit exemple montrant comment écrire dans Excel en C#

Le texte écrit dans Excel Voici le code complet d'une application console en C# qui se connecte à une session Excel existante ou qui en crée une nouvelle si Excel n'est pas en cours d'exécution. Si Excel est en cours d'exécution, le texte est écrit dans le classeur actif . Si Excel n'est pas démarré, il est exécuté et un classeur vide est créé. Le texte est écrit dans la première cellule (A1). Notez que les index commencent à 1 et non pas à zéro.

Le code utilise le mot clé dynamic, il faut donc utiliser .NET 4.0. On pilote Excel dans le mode dit Late binding, il n'y a donc pas besoin d'ajouter des références aux dll Interop d'Excel.

Si vous utilisez GitHub, voici le Gist correspondant.

using System;
using System.Runtime.InteropServices;

namespace WriteToExcel
{
    class Program
    {
        const string EXCEL_PROG_ID = "Excel.Application";

        const uint MK_E_UNAVAILABLE = 0x800401e3;

        const uint DV_E_FORMATETC = 0x80040064;

        static void Main(string[] args)
        {
            dynamic excelApp = null;
            try
            {
                excelApp = Marshal.GetActiveObject(EXCEL_PROG_ID);
            }
            catch (COMException ex)
            {
                switch ((uint)ex.ErrorCode)
                {
                    case MK_E_UNAVAILABLE:
                    case DV_E_FORMATETC:
                        // Excel n'est pas lancé.
                        break;

                    default:
                        throw;
                }
            }

            if (null == excelApp)
                excelApp = Activator.CreateInstance(Type.GetTypeFromProgID(EXCEL_PROG_ID));

            if (null == excelApp)
            {
                Console.Write("Unable to start Excel");
                return;
            }

            excelApp.Visible = true;

            dynamic workbook = excelApp.ActiveWorkbook ?? excelApp.Workbooks.Add();
            dynamic sheet = workbook.ActiveSheet;
            dynamic cell = sheet.Cells[1, 1];
            cell.Value = "Hello world!";
        }
    }
}

Vous pouvez télécharger le projet Visual Studio 2010 ci-dessous.

Fichier attachéTaille
File WriteToExcel.7z2.44 KB

Etiquettes:

Ajouter un commentaire