Feedback

Excel-Export ohne Excel (auch für Web)

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;

namespace Rainbird.Examples.SpreadsheetML
{
    /// <summary>
    /// Enthält Hilfsfunktionen zum Erzeugen von Excel-Dateien mit SpreadsheetML.
    /// </summary>
    public class SpreadsheetMLHelper
    {
        /// <summary>
        /// Erzeugt aus einer DataTable ein Excel-XML-Dokument mit SpreadsheetML.
        /// </summary>        
        /// <param name="dataSource">Datenquelle, die in Excel exportiert werden soll</param>
        /// <param name="fileName">Dateiname der Ausgabe-XML-Datei</param>
        public static void ExportDataTableToWorksheet(DataTable dataSource, string fileName)
        {
            // XML-Schreiber erzeugen
            XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.UTF8);

            // Ausgabedatei für bessere Lesbarkeit formatieren (einrücken etc.)
            writer.Formatting = Formatting.Indented;

            // <?xml version="1.0"?>
            writer.WriteStartDocument();

            // <?mso-application progid="Excel.Sheet"?>
            writer.WriteProcessingInstruction("mso-application", "progid="Excel.Sheet"""");

4 Kommentare

  1. Hi Rainbird,
    danke für den Snippet und die vielen Kommentare!
    Du hast mir damit sehr geholfen 🙂

    Und ja, es funktioniert auch mit Excel 2007 einwandfrei!

  2. Hallo Rainbird,

    ich heiße Nick und bin gerade bei einem Projekt wo ich nicht weiterkomme und hoffe dass du mir dabei helfen kannst und zwar das Projekt ist ExcelExport mit NetOffice unter C#.

    Folgende Anforderung an das Projekt:

    Es gibt bereits eine Methode „private void ExportExcelToDirectory(System.Data.DataTable myTable, string FileName,string SheetName){……}“ mit dem ich eine beliebige Datei nach Excel exportieren kann und nun meine Aufgabe, ich soll die Methode „private void ExportExcelNetOffice(System.Data.DataTable myTable, string FileName, string SheetName){……“} unter C# programmieren und dabei als Bibliothek NetOffice(openXML) verwenden. Danach soll ich die beide Methoden hinsichtlich Geschwindigkeit, Performance, Vorteile und Nachteile beurteilen können.

    Kannst du mir bitte dabei helfen, die Methode zu programmieren? Wäre echt nett von dir.

    So habe ich mit der Methode begonnen:

    private void ExportExcelNetOffice(System.Data.DataTable myTable, string FileName, string SheetName)
    {
    // Wandle übergebene Tabelle in Exeltabelle um
    DataTable dtExcelData = ConvertTableType(myTable);
    // Excel-Application starten
    Excel.Application application = new Excel.Application();
    }

    Viele Grüße
    Nick

  3. Super!
    Mit Excel 2007 funktioniert es auch.
    Allerdings hatte ich eine Fehler in meiner Datatable.
    Ich musste erst einen Tabellennamen vergeben mit table.TableName = „test“;.
    Ohne dem konnte ich die Datei mit Excel nicht öffnen.

    Also: „DataTable dataSource“ muss vollständig sein.