Posts
289
Comments
88
Trackbacks
4
Exceldateien mit C# erstellen

Hier ein Beispiel wie man mit C# und der Microsoft-Office-API Excel fernsteuern und so eine Exceldatei erstellen kann.

Hierzu muss auf dem Rechner Microsoft-Office installiert sein, dann lässt sich im Visual-Studio Projekt einen COM Verweis auf "Microsoft Excel 11.0 Object Libary" setzen und so die Excel API in das Projekt einbinden.

Der Namespace muss noch in die eingebunden werden, hierbei empfiehlt es sich für den Namespace "Microsoft.Office.Interop.Excel" einen anderen Namen zu verwenden, damit mehrdeutige Objektverweise vermieden werden.

using Excel = Microsoft.Office.Interop.Excel;

So kommt z.B. das Objekt "Application" sowohl im Namespace "Microsoft.Office.Interop.Excel" als auch im Namespace "System.Windows.Forms" vor, zudem macht es den Quellcode lesbarer.

Das folgende Beispiel öffnet Excel, erstellt ein Workbook, gibt Werte ein und erstellt anschließend eine Grafik und fügt diese in die Exceldatei ein und schließt Excel wieder: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelBeispiel
{

  public partial class Form1 : Form
  {

     public Form1()
    {
        InitializeComponent();
    }

     private void buttonCreateExcelFile_Click(object sender, EventArgs e)
    {
      // Variablen deklarieren 
      Excel.Application myExcelApplication;
      Excel.Workbook myExcelWorkbook;
      Excel.Worksheet myExcelWorkSheet;
      myExcelApplication = null;

       try
      {
        // First Contact: Excel Prozess initialisieren
        myExcelApplication = new Excel.Application();
        myExcelApplication.Visible = true;
        myExcelApplication.ScreenUpdating = true;

        // Excel Datei anlegen: Workbook
        var myCount = myExcelApplication.Workbooks.Count;
        myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(System.Reflection.Missing.Value));
        myExcelWorkSheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet;

        // Überschriften eingeben
        myExcelWorkSheet.Cells[2, 2] = "Hamburg";    // Zelle B2
        myExcelWorkSheet.Cells[2, 3] = "Nürnberg";   // Zelle C2
        myExcelWorkSheet.Cells[2, 4] = "Hamburg";    // Zelle D2

        // Formatieren der Überschrift
        Excel.Range myRangeHeadline;
        myRangeHeadline = myExcelWorkSheet.get_Range("B2", "D2");
        myRangeHeadline.Font.Bold = true;
        myRangeHeadline.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
        myRangeHeadline.Borders.Weight = Excel.XlBorderWeight.xlThick;

        // Daten eingeben
        myExcelWorkSheet.Cells[3, 2] = "18";

        myExcelWorkSheet.Cells[3, 3] = "21";
        myExcelWorkSheet.Cells[3, 4] = "11";
        myExcelWorkSheet.Cells[4, 2] = "21";
        myExcelWorkSheet.Cells[4, 3] = "32";
        myExcelWorkSheet.Cells[4, 4] = "22";
        myExcelWorkSheet.Cells[5, 2] = "12";
        myExcelWorkSheet.Cells[5, 3] = "56";
        myExcelWorkSheet.Cells[5, 4] = "14";
        myExcelWorkSheet.Name = "Kunden";


        // Chart erzeugen
        Excel.Range myRangeValues;
        myRangeValues = myExcelWorkSheet.get_Range("B3", "D5");

        Excel.Chart myChart = (Excel.Chart)myExcelWorkbook.Charts.Add(
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value);

        myChart.ChartWizard(
          myRangeValues,
          Excel.XlChartType.xl3DColumn,
          System.Reflection.Missing.Value,
          Excel.XlRowCol.xlRows,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          System.Reflection.Missing.Value,
          "Titel",
          "Kunden",
          "Anzahl",
          System.Reflection.Missing.Value);

         myChart.CopyPicture(Excel.XlPictureAppearance.xlScreen,
          Excel.XlCopyPictureFormat.xlBitmap,
          Excel.XlPictureAppearance.xlScreen);

         myChart.Location(Excel.XlChartLocation.xlLocationAsObject,myExcelWorkSheet.Name);

        // Excel Datei abspeichern
        // wenn die Datei vorher vorhanden ist, kommt in Excel eine Fehlermeldung.
        myExcelWorkbook.Close(true, "C:\\kunden.xls", System.Reflection.Missing.Value);
      }

      catch (Exception ex)
      {
        String myErrorString = ex.Message;
        MessageBox.Show(myErrorString);
      }
      finally

      {
        // Excel beenden
        if (myExcelApplication != null)
        {
          myExcelApplication.Quit();
        }

      }  

    }  

  }  

}

posted on Friday, September 05, 2008 11:00 AM Print
Comments
Gravatar
# re: Exceldateien mit C# erstellen
Andre Loker
9/20/2008 9:53 AM
Es gibt zudem auch Bibliotheken, mit denen man Excelsheets erzeugen kann, ohne dass auf dem Rechner Office installiert ist (praktisch z.B. für Server), z.B. http://www.codeplex.com/ExcelPackage oder http://www.carlosag.net/Tools/ExcelXmlWriter/Default.aspx

Gravatar
# re: Exceldateien mit C# erstellen
Christian
9/21/2008 4:49 PM
Danke für die Hinweise.

Ich kannte bisher nur Aspose Cells
Gravatar
# re: Exceldateien mit C# erstellen
free ebooks download
10/24/2008 9:05 AM
Useful codes.
Best Regards!
Matt
From USA.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 8 and 3 and type the answer here: