2008-10-06 2 views
13

Ich habe ein Webprojekt, in dem ich Text und Bilder aus einem vom Benutzer bereitgestellten Dokument importieren muss. Eines der möglichen Formate ist Microsoft Office 2007. Außerdem müssen Dokumente in diesem Format generiert werden.Analysieren und Generieren von Microsoft Office 2007-Dateien (.docx, .xlsx, .pptx)

Der Server läuft mit CentOS 5.2 und hat PHP/Perl/Python installiert. Ich kann lokale Binärdateien und Shell-Skripte ausführen, wenn ich muss. Wir verwenden Apache 2.2, werden aber nach dem Produktivstart auf Nginx umstellen.

Was sind meine Optionen? Hat jemand Erfahrung damit?

Antwort

17

Die Office 2007-Dateiformate sind geöffnet und well documented. Grob gesagt sind alle neuen Dateiformate, die mit "x" enden, zip-komprimierte XML-Dokumente. Zum Beispiel:

Um eine Word 2007 XML-Datei eines temporären Ordner, in dem Erstellen zu öffnen, um speichern Sie die Datei und seine Teile.

Speichern Sie ein Word 2007-Dokument, das Text, Bilder und andere Elemente enthält, als eine .docx-Datei.

Fügen Sie am Ende des Dateinamens eine Erweiterung .zip hinzu.

Doppelklicken Sie auf die Datei. Es öffnet sich in die ZIP-Anwendung. Sie können die Teile sehen, aus denen die Datei besteht.

Extrahieren Sie die Teile in den zuvor erstellten Ordner .

Die anderen Dateiformate sind ungefähr ähnlich. Ich kenne keine Open-Source-Bibliotheken, um mit ihnen zu interagieren - aber je nach Ihren Anforderungen sieht es nicht so schwierig aus, einfache Dokumente zu lesen und zu schreiben. Sicherlich sollte es viel einfacher sein als bei den älteren Formaten.

Wenn Sie die älteren Formate lesen müssen, hat OpenOffice eine API und kann Office 2003 und ältere Dokumente mit mehr oder weniger Erfolg lesen und schreiben.

+0

Das ist wunderbar. Danke für die Einsicht. – Brian

2

Sie können wahrscheinlich den Code für Sphider überprüfen. Sie sind Doktoren und pdfs, also bin ich sicher, dass sie sie lesen können. Könnte Sie auch für andere Office-Formate in die richtige Richtung führen.

3

Ich habe erfolgreich OpenXML Format SDK in einem Projekt verwendet, um eine Excel-Tabelle über Code zu ändern. Dies würde .NET erfordern und ich bin mir nicht sicher, wie gut es unter Mono funktionieren würde.

6

Das Python docx-Modul kann formatierte Microsoft Office-docx-Dateien aus reinem Python generieren. Im Lieferumfang enthalten sind Header, Absätze, Tabellen und Aufzählungszeichen, aber das Modul "makeelement()" kann erweitert werden, um beliebige Elemente wie Bilder auszuführen.

from docx import * 
document = newdocument() 

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0] 

# Append two headings 
docbody.append(heading('Heading',1) ) 
docbody.append(heading('Subheading',2)) 
docbody.append(paragraph('Some text') 
Verwandte Themen