2008-10-06 7 views
13

Tengo un proyecto web donde debo importar texto e imágenes de un documento proporcionado por el usuario, y uno de los formatos posibles es Microsoft Office 2007. También es necesario generar documentos en este formato.Analizando y generando archivos de Microsoft Office 2007 (.docx, .xlsx, .pptx)

El servidor ejecuta CentOS 5.2 y tiene PHP/Perl/Python instalado. Puedo ejecutar binarios locales y scripts de shell si es necesario. Usamos Apache 2.2 pero cambiaremos a Nginx una vez que entre en funcionamiento.

¿Cuáles son mis opciones? Alguien tiene experiencia con esto?

Respuesta

17

Los formatos de archivo de Office 2007 están abiertos y well documented. En términos generales, todos los nuevos formatos de archivo que terminan en "x" son documentos comprimidos en formato zip. Por ejemplo:

Para abrir un archivo XML de Word 2007 Crear una carpeta temporal en el que almacenar el archivo y sus partes.

Guardar un documento de Word 2007, que contiene texto, imágenes y otros elementos, como un archivo .docx.

Agregue una extensión .zip al final del nombre de archivo .

Haga doble clic en el archivo. Se abrirá en la aplicación ZIP. Puede ver las piezas que componen el archivo.

Extraiga las piezas en la carpeta que creó anteriormente.

Los otros formatos de archivo son más o menos similares. No conozco ninguna biblioteca de código abierto para interactuar con ellos todavía, pero dependiendo de sus requisitos exactos, no parece demasiado difícil leer y escribir documentos simples. Sin duda, debería ser mucho más fácil que con los formatos anteriores.

Si necesita leer los formatos anteriores, OpenOffice tiene una API y puede leer y escribir documentos de Office 2003 y anteriores con más o menos éxito.

+0

Esto es maravilloso. Gracias por la visión. – Brian

2

Probablemente pueda verificar el código de Sphider. Ellos docs y pdfs, así que estoy seguro de que pueden leerlos. También podría guiarlo en la dirección correcta para otros formatos de Office.

3

He utilizado con éxito el OpenXML Format SDK en un proyecto para modificar una hoja de cálculo de Excel a través del código. Esto requeriría .NET y no estoy seguro de qué tan bien funcionaría bajo Mono.

6

El módulo python docx puede generar archivos docx de Microsoft office formateados a partir de Python puro. Fuera de la caja, tiene encabezados, párrafos, tablas y viñetas, pero el módulo makeelement() se puede ampliar para hacer elementos arbitrarios como imágenes.

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') 
Cuestiones relacionadas