2009-05-28 19 views
6

Sto lavorando su un progetto (in Python) che necessita di output formattato e modificabile. Dal momento che l'utente finale non sarà tecnicamente esperto, l'output deve essere in un formato modificabile di word processor. La formattazione è complessa (punti elenco, paragrafi, faccia in grassetto, ecc.).Output formattato in OpenOffice/Microsoft Word con Python

C'è un modo per generare un tale rapporto usando Python? Mi sembra che ci dovrebbe essere un modo per farlo usando i template Microsoft Word/OpenOffice e Python, ma non riesco a trovare nulla di abbastanza avanzato da ottenere una buona formattazione. Eventuali suggerimenti?

risposta

1

So che c'è uno odtwriter for docutils. È possibile generare l'output come reStructuredText e inviarlo a odtwriter o esaminare in che cosa sta utilizzando odtwriter sul backend per generare l'ODT e utilizzarlo.

(Probabilmente andrei con la generazione del primo output e poi l'hacking di odtwriter per l'output del materiale che voglio (e contribuirò con le correzioni al progetto), perché probabilmente è molto più semplice provare a renderizzare i tuoi contenuti su ODT direttamente.)

+1

+1: RST xxxxxxx15 –

1

Ho usato xlwt per creare documenti Excel usando python, ma non ho ancora avuto bisogno di scrivere file di parole. Ho trovato questo pacchetto, OOoPy, ma non l'ho usato.

Inoltre, è possibile provare a esportare file html e farli aprire agli utenti in Word.

0

Penso che OpenOffice abbia alcuni collegamenti Python - dovresti essere in grado di scrivere macro OO in Python.

Ma preferisco usare l'HTML invece - Word e OO.org sono piuttosto bravi a modificarlo e puoi scriverlo facilmente da Python (anche se Word risparmia un sacco di problemi che potrebbero complicarne l'analisi tramite la tua app Python).

2

"La formattazione è complessa (punti elenco, paragrafi, grassetto, ecc),"

Usa RST.

È banale da produrre, poiché è testo normale.

È semplice da modificare, poiché è un testo semplice con alcuni caratteri in più per fornire informazioni strutturali.

Formatta bene utilizzando un gruppo di tools.

3

Un fatto poco noto e un po 'malvagio: se si crea un file HTML e si configura un'estensione .doc, Word lo aprirà come documento di Word e la maggior parte degli utenti non ne saprà nulla.

Tranne forse una persona molto tecnica dirà, questo è un piccolo file Word! :)

+0

E quindi se un utente lo modifica e lo salva, cosa succede? –

+1

Quindi diventa un normale file di Word. –

+0

che è molto utile - grazie Ryan – hoju

2

Utilizzare il modulo Python Docx per questo - 100% Python, tabelle, immagini, proprietà del documento, intestazioni, paragrafi e altro.

+0

buona raccomandazione. È un peccato che faccia solo .docx – Sevenearths

1

È possibile utilizzare QTextDocument, QTextCursor e QTextDocumentWriter in PyQt4. Un semplice esempio per mostrare come scrivere un file ODT:

>>>from pyqt4 import QtGui 
# Create a document object 
>>>doc = QtGui.QTextDocument() 
# Create a cursor pointing to the beginning of the document 
>>>cursor = QtGui.QTextCursor(doc) 
# Insert some text 
>>>cursor.insertText('Hello world') 
# Create a writer to save the document 
>>>writer = QtGui.QTextDocumentWriter() 
>>>writer.supportedDocumentFormats() 
[PyQt4.QtCore.QByteArray(b'HTML'), PyQt4.QtCore.QByteArray(b'ODF'), PyQt4.QtCore.QByteArray(b'plaintext')] 
>>>odf_format = writer.supportedDocumentFormats()[1] 
>>>writer.setFormat(odf_format) 
>>>writer.setFileName('hello_world.odt') 
>>>writer.write(doc) # Return True if successful 
True 

QTextCursor può anche inserire tabelle, cornici, blocchi, immagini.Ulteriori informazioni: http://qt-project.org/doc/qt-4.8/qtextcursor.html

Come bonus, è anche possibile stampare su un file PDF utilizzando QPrinter.

Problemi correlati