Frage

Ich versuche, Excel 2007 Dokumente programmatisch zu erstellen. Nun gibt es zwei Möglichkeiten, die ich gefunden habe:

Zur Zeit benutze ich ExcelPackage, die einige wirklich ernste Nachteile und Probleme hat. Da ich nicht allzu komplexe Excel-Tabellen erstellen müssen (die „kompliziert“ ist, dass ich explizit eine Zelltyp numerisch oder Text festlegen müssen), ich suche auf Option 1 nächste, aber ich frage mich nur, wenn es noch andere gute und unterstützt Möglichkeiten, Excel 2007 Sheets zu generieren? Bonuspunkte, wenn sie können, ohne erstellt werden, um sie auf die Festplatte zu speichern, das heißt zu erzeugen und direkt ausgegeben sie in einen Strom.

.net 3.0 ist das Ziel hier, keine 3,5 Güte: (

Edit: Dank so weit. Der XML-SDK ist in der Tat 3,5 nur, aber Russian Roulet ... erm ... COM Interop ist auch etwas, was ich wann immer möglich vermeiden will, vor allem, da Excel 2007 ein etwas kompliziert ist, aber immer noch ziemlich einfaches Dokumentenformat zu erstellen. Ich werde einen Blick auf die verschiedenen Links haben und Hinweise veröffentlicht.

War es hilfreich?

Lösung

Sie könnten versuchen, die Büro Open XML SDK . Dies ermöglicht Ihnen, Excel-Dateien im Speicher zu erstellen MemoryStream mit sagen und viel leichter als all XML von Hand zu erzeugen.

Wie Brian Kim wies darauf hin, Version 2.0 des SDK erfordert .NET 3.5, die Sie angegeben war nicht verfügbar. Version 1 des SDK auch verfügbar ist, die .NET 3.0 unterstützt. Es ist nicht so vollständig, aber zumindest helfen, die XML-Teile des Dokumentes und die Beziehungen zwischen ihnen zu verwalten.

Andere Tipps

Ich bin gerade, HTML-Tabelle, die von Excel geöffnet werden kann:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wnioski</title>
<style type="text/css">
<!--
br { mso-data-placement: same-cell; }
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; }
-->
</style>

<table>
<tr style="height:15.0pt">
<td style="mso-number-format: general">474</td>
<td>474</td>

<tr>
<td>data2</td>
<td>data3</td>

<tr>
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td>
<td style="mso-number-format: standard">0.00</td>

<tr>
<td style="mso-number-format: general">line1<br>line2<br>line3</td>
<td></td>

</table>

Das funktioniert gut, auch als Datenquelle für Serienbriefe in Word arbeitet mit Openoffice Calc etc. Und es ist einfach tot zu erzeugen.

Ich wollte auf BKimmel den Beitrag kommentieren, aber anscheinend habe ich nicht genug, so kühl Punkte vor.

Wenn Excel bereits geöffnet ist, können Sie sich die lästige Meldung „personal.xls bereits geöffnet ist“. Ich versuche zuerst die App zu bekommen. Wenn das fehlschlägt, dann schafft es:

On Error Resume Next
Set myxlApp  = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
  Err.Clear
  Set myxlApp = CreateObject("Excel.Application")
  If Err.Number <> 0 Then
    ' return False, show message, etc.
  End If
End If

Ich habe den größten Teil des Open XML (xlsx) arbeiten in SpreadsheetGear für .NET und es ist bei weitem aus einer trivialen Übung. Ich empfehle, mit den Office Open XML SDK oder einem anderen dritten Partei-Bibliothek wie SpreadsheetGear oder einer unserer Konkurrenten (nur Google „SpreadsheetGear“ zu sehen, wer unsere Konkurrenten sind).

SpreadsheetGear für .NET scheint Ihre Bedürfnisse zu erfüllen:

  • Arbeitet mit .NET 2.0, .NET 3.0 und .NET 3.5.
  • Unterstützt mit IWorkbook.SaveToStream in einen Stream zu schreiben oder mit IWorkbook.SaveToMemory zu einem Byte-Array zu schreiben.
  • Unterstützt Excel 97-2003 (xls) Arbeitsmappe, die Sie das nächste, was zu sein, werden gebeten, denn wenn Sie unterstützen müssen sehr viele Nutzer wahrscheinlich ist.

Sie können einen kostenlosen Download, voll funktionsfähigen Test hier .

Excel ist sehr skript durch COM-Objekte. Ich habe nicht versucht, aber das sollte eine feste Lösung, obwohl weder schnell oder leicht sein.

Was auch immer Sie am Ende tun, überprüfen Sie, ob Ihre Lösung Unicode unterstützt. Ich habe in einige ernsthafte Probleme stoßen mit bestehenden Lösungen für das Schreiben von xls-Dateien (das heißt, vor 2007-Dateien).

Sie können die Primary Interop Assemblies (Amt API) verwenden, um programm Excel-Dokumente zu erzeugen - ich würde nichts zu kompliziert, sie tun wollen, aber es klingt nicht wie, dass Ihre Anforderung

Dieser Ansatz soll arbeiten als auch die Dokumentation im Speicher zu erzeugen.

Hier sind einige Ressourcen:

benutzte ich Textverarbeitung Markup zu erzeugen Dokumente, die eine Bibliothek von Funktionen für die Erstellung der richtigen XML für Tabellen und Absätze werden.

ich dann änderte nur den MIME-Typen für die Antwort-Header ein Word-Dokument und schickte die XML als Antwort an den Client zu sein. Entweder öffnet in ihrem Browser oder speichert als eine Datei.

Es scheint nicht die gleiche 2003 SDK für Excel zu sein, obwohl es gibt MS Open XML SDK

Jeder Code-Snob am Leben hasst vbscript, aber es ist einfach und es funktioniert:

Set myxlapp = CreateObject("Excel.Application")
Set mywb = myxlapp.Workbooks.Add
myxlapp.Visible = true

Setzen Sie, dass in einer Textdatei, fügen Sie einen „vbs“ am Ende und presto.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top