Analisi e generazione di file di Microsoft Office 2007 (.docx, .xlsx, .pptx)
-
05-07-2019 - |
Domanda
Ho un progetto web in cui devo importare testo e immagini da un documento fornito dall'utente e uno dei formati possibili è Microsoft Office 2007. È inoltre necessario generare documenti in questo formato.
Il server esegue CentOS 5.2 e ha installato PHP / Perl / Python. Posso eseguire binari locali e script di shell, se necessario. Usiamo Apache 2.2 ma passeremo a Nginx una volta che sarà attivo.
Quali sono le mie opzioni? Qualcuno ha avuto esperienza con questo?
Soluzione
I formati di file di Office 2007 sono aperti e ben documentati . In parole povere, tutti i nuovi formati di file che terminano in " x " sono documenti XML compressi tramite zip. Ad esempio:
Per aprire un file XML di Word 2007 Creare un cartella temporanea in cui archiviare il file file e sue parti.
Salva un documento di Word 2007, contenente testo, immagini e altri elementi, come un file .docx.
Aggiungi un'estensione .zip alla fine di nome del file.
Fai doppio clic sul file. Si aprirà l'applicazione ZIP. Puoi vedere il parti che compongono il file.
Estrai le parti nella cartella che hai creato in precedenza.
Gli altri formati di file sono approssimativamente simili. Non conosco ancora nessuna libreria open source per interagire con loro - ma a seconda delle tue esatte esigenze, non sembra troppo difficile leggere e scrivere documenti semplici. Certamente dovrebbe essere molto più semplice rispetto ai formati precedenti.
Se devi leggere i formati precedenti, OpenOffice ha un'API e può leggere e scrivere documenti Office 2003 e precedenti con più o meno successo.
Altri suggerimenti
Il modulo docx python può generare file docx Microsoft Office formattati da Python puro. Immediatamente fa intestazioni, paragrafi, tabelle e punti elenco, ma il modulo makeelement () può essere esteso per fare elementi arbitrari come le immagini.
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')
Ho usato con successo il SDK in formato OpenXML in un progetto per modificare un foglio di calcolo Excel tramite codice. Ciò richiederebbe .NET e non sono sicuro di come funzionerebbe sotto Mono.
Probabilmente puoi controllare il codice per Sphider . Sono documenti e pdf, quindi sono sicuro che possono leggerli. Potrebbe anche portarti nella giusta direzione per altri formati di Office.