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"""");
Alte URL:
/snippet/excel-export-ohne-excel-auch-fuer-web/632
Ganz optimal ist es natürlich die Daten im einfachen XML Format auszugeben und das SpreadsheetML per XSL Template zu erzeugen. So wie ich es mit dem WordML auf den Seiten der Gewerbeakademie Konstanz für den Download der Kursangebote gemacht habe:
http://www.gewerbe-ga.de/
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!
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
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.