2009-08-25 7 views
4

Einfache Frage. Kennt jemand eine einfache Möglichkeit zum Konvertieren von SpreadsheetML (Excel 2003 XML) in das Open Document XML, das für Excel 2007 (xlsx) -Dateien verwendet wird?Excel Konvertierung von SpreadsheetML zu Open XML (XLSX)

Ich habe eine Bibliothek, die leider nicht das XML-Format liest, also muss ich versuchen, eine Möglichkeit zum Lesen der Daten zu finden, die keine andere Bibliothek beinhaltet.

Alle Vorschläge geschätzt.

+0

Bit weitere Informationen. Der Grund, warum ich das Interop nicht benutzen kann/kann, ist, dass dies ein Serverprozess sein könnte, für den das Interop nicht funktioniert. Die Bibliothek, die ich derzeit verwende, ist ein Workaround, unterstützt jedoch nur XLS- und XLSX-Dateien. Ich hatte vor kurzem eine neue Anforderung, die mit einer anderen Funktion arbeiten muss, die das XML erzeugt, das für Excel 2003 passend ist. Jedoch wird dies nicht von der Bibliothek unterstützt/wird nicht unterstützt, also versuche ich einen Weg zu finden darum herum. – Ian

Antwort

1

Das Dateiformat hat sich in der Tat erheblich von SpreadsheetML zu Office Open XML geändert.

Und da jetzt Tabellenkalkulationsdateien in mehrere XML-Dateien aufgeteilt sind (die alle dann gezippt werden), gibt es keine wirkliche Hoffnung auf eine einfache XLST-Lösung.

Die einfachste Vorgehensweise ist leider, Excel mit einem Makro zu automatisieren, um jede SpreadsheetML-Dateien zu öffnen und ein "Speichern unter" zu dem neueren Format zu machen. Dies kann in Office 2003 mit dem Office 2007-Dateiformat-Plug-in erfolgen. Vielleicht kann dies zu einem Batch-Prozess degradiert werden, so dass der Server nicht direkt involviert ist?

Wenn die Daten in den Tabellen trivial sind und einem konsistenten Format folgen, können Sie einen eigenen Parser schreiben, um direkt aus den SpreadsheetML-Dateien zu importieren.

+0

Denken Sie, wir müssen sie möglicherweise manuell tun, und nur bestimmte Einschränkungen für den Benutzer abhängig davon, ob es automatisiert ist oder nicht. Danke, – Ian

1

Ein einfacher Weg wäre Excel COM-Bibliothek (Excel 2007) verwenden, aber ich denke, das ist nicht die Antwort, die Sie suchen.

Was kann Ihre Bibliothek? Mit dem Open XML SDK 2.0 können Sie das Tabellenkalkulationsdokument basierend auf der Ausgabe Ihrer Bibliothek schreiben.

Mit freundlichen Grüßen

+0

Ich habe das nur überprüft, aber leider nicht, da wir derzeit gegen .NET 2.0 – Ian

0

IIRC das Office 2003-Format wie Opendocument-Format funktioniert: Es ist eine ZIP-Datei mit XML-Dateien nach innen, so (wenn man genug Zeit/Mut haben) Sie es öffnen können, finden Sie die XML-Datei, die enthält die Daten und schließlich mit XML.

Ich weiß, diese Antwort ist für mutigen Entwickler;)

Grüße.

+2

bauen müssen. Allerdings scheint sich das XML innerhalb der XLSX-Zip-Datei erheblich vom XML innerhalb des Excel 2003 XML-Formats zu unterscheiden. – Ian

+0

Ich fürchte, das ist ein "Feature" von M $ Jungs, aber Sie sind da, um die Lücke zu füllen;) – ATorras

+0

Ja, WordprocessingML! = OpenXML. – BrainSlugs83

2

Wenn Sie tiefe Taschen haben Aspose.Cells können beide Formate lesen/schreiben und sollten für eine wirklich einfache Konvertierung ohne Automatisierung sorgen.

http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx

Aspose.Cells für .NET

Aspose.Cells for .NET ist ein preisgekröntes Tabellenkomponente, die .NET-Entwicklern die Möglichkeit zum Einbetten ermöglicht das Lesen, zu Schreiben und Bearbeiten Sie Excel-Tabellen in ihre eigenen Anwendungen, ohne auf Microsoft Excel angewiesen zu sein.

Aspose.Cells for .NET ist eine ausgereifte, skalierbare und funktionsreiche Komponente, die viele Funktionen bietet, die weit über die einfachen Datenexportfunktionen anderer Hersteller hinausgehen. Mit Aspose.Cells for .NET können Entwickler Daten exportieren, Tabellenkalkulationen auf die feinste Ebene formatieren, Bilder importieren, Diagramme importieren, Diagramme erstellen, komplexe Formeln anwenden und berechnen, Excel-Daten streamen, in verschiedenen Formaten speichern und vieles mehr - all dies ohne die Notwendigkeit, Microsoft Excel oder Microsoft Office Automation zu verwenden.

Preise beginnen bei $ 899 pro Entwickler für Unternehmen (interne) Entwicklung und steigt von dort sehr steil.

+0

+1, denn in der Tat würde Aspose die Arbeit tun, und tatsächlich hätte das Problem in erster Linie umgangen. Am Ende habe ich meinen eigenen Parser geschrieben, um die Tabelle mit der API neu zu erstellen, die wir bereits gekauft hatten. – Ian

1

Versuchen Sie, JODConverter zu verwenden. JODConverter ermöglicht die Konvertierung von SpreadsheetML mit der OpenOffice.org oder Libreoffice Engine.

+0

Sieht aus wie ein verlassenes Projekt? – BrainSlugs83

0

Überprüfung dieser Code static void XlsToXlsx

static void XlsToXlsx (string sourceFile, string destinationFile) 
{ 
    Type officeType = Type.GetTypeFromProgID("Excel.Application"); 

    Excel.Application app = new Excel.Application(); 
    app.DisplayAlerts = false; 
    // Open Excel Workbook for conversion. 
    Excel.Workbook excelWorkbook = app.Workbooks.Open(sourceFile); 
    // Save file as CSV file. 
    //excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlCSV); 
    excelWorkbook.SaveAs(destinationFile, Excel.XlFileFormat.xlOpenXMLWorkbook); 
    // Close the Workbook. 
    excelWorkbook.Close(); 
    // Quit Excel Application. 
    app.Quit(); 
} 
Verwandte Themen