template phpword office ejemplos php ms-word read-write

office - phpword ejemplos



Lectura/escritura de un archivo de MS Word en PHP (15)

¡Incluso estoy trabajando en el mismo tipo de proyecto [Procesador de textos de Onlinw]! Pero he elegido c # .net y ASP.net. Pero a través de la encuesta que hice; Tengo que saber eso

Mediante el uso de Open XML SDK y VSTO [Visual Studio Tools For Office]

podemos trabajar fácilmente con un archivo de palabras manipularlos e incluso convertir internamente a diferentes en varios formatos como .odt, .pdf, .docx, etc.

Por lo tanto, vaya a msdn.microsoft.com y sea exhaustivo sobre la pestaña de desarrollo de la oficina. ¡Es la forma más fácil de hacerlo ya que todas las funciones que necesitamos implementar ya están disponibles en .net!

Pero como quieres hacer tu proyecto en PHP, puedes hacerlo en Visual Studio y .net ya que PHP también es uno de los lenguajes que cumplen con .NET.

¿Es posible leer y escribir archivos de Word (2003 y 2007) en PHP sin usar un objeto COM? Sé que puedo:

$file = fopen(''c:/file.doc'', ''w+''); fwrite($file, $text); fclose();

pero Word lo leerá como un archivo HTML, no como un archivo .doc nativo.


¿Funcionaría el formato .rtf para sus propósitos? .rtf se puede convertir fácilmente a formato .doc y desde este, pero está escrito en texto plano (con comandos de control incrustados). Así es como planeo integrar mi aplicación con documentos de Word.


2007 puede ser un poco complicado también.

El formato .docx es un archivo zip que contiene algunas carpetas con otros archivos para formatear y otras cosas.

Cambie el nombre de un archivo .docx a .zip y verá lo que quiero decir.

Entonces, si puede trabajar dentro de archivos zip en PHP, debe estar en el camino correcto.


La lectura de documentos binarios de Word implicaría la creación de un analizador de acuerdo con las especificaciones de formato de archivo publicadas para el formato DOC. Creo que esta no es una solución viable real.

Puede usar los formatos XML de Microsoft Office para leer y escribir archivos de Word; esto es compatible con las versiones 2003 y 2007 de Word. Para leer, debe asegurarse de que los documentos de Word estén guardados en el formato correcto (se denomina documento XML de Word 2003 en Word 2007). Para escribir, solo tiene que seguir el esquema XML disponible de forma abierta. Nunca he usado este formato para escribir documentos de Office desde PHP, pero lo estoy usando para leer en una hoja de cálculo de Excel (naturalmente guardada como XML-Spreadsheet 2003) y mostrar sus datos en una página web. Como los archivos son simplemente datos XML, no hay problema para navegar dentro y descubrir cómo extraer los datos que necesita.

La otra opción, una opción solo de Word 2007 (si los formatos de archivo OpenXML no están instalados en su Word 2003), sería rescatar a OpenXML . Como databyss señaló here el formato de archivo DOCX es solo un archivo ZIP con archivos XML incluidos. Hay muchos recursos en MSDN respecto al formato de archivo OpenXML, por lo que debería poder descifrar cómo leer los datos que desea. Escribir será mucho más complicado, creo, solo depende de cuánto tiempo va a invertir.

Quizás pueda echar un vistazo a PHPExcel que es una biblioteca capaz de escribir en archivos de Excel 2007 y leer desde archivos de Excel 2007 utilizando el estándar OpenXML. Puede hacerse una idea del trabajo que implica tratar de leer y escribir documentos de OpenXML Word.


Lo más probable es que no puedas leer documentos de Word sin COM.

La escritura se cubrió en este topic


No sé leer documentos nativos de Word en PHP, pero si desea escribir un documento de Word en PHP, WordprocessingML (también conocido como WordML) podría ser una buena solución. Todo lo que tienes que hacer es crear un documento XML en el formato correcto. Creo que Word 2003 y 2007 son compatibles con WordML.


No sé para qué lo va a usar, pero necesitaba el soporte de .doc para la indexación de búsqueda; Lo que hice fue usar una pequeña herramienta de línea de comando llamada "catdoc"; Esto transfiere el contenido del documento de Word a texto sin formato para que pueda ser indexado. Si necesita seguir formateando y cosas así, esta no es su herramienta.


Office 2007 .docx debería ser posible ya que es un estándar XML. Es muy probable que Word 2003 necesite la lectura de COM, incluso con los estándares publicados por MS, ya que esos estándares son enormes. No he visto muchas bibliotecas escritas para unirlas todavía.


Puede usar Antiword, es un lector gratuito de MS Word para Linux y el sistema operativo más popular.

$document_file = ''c:/file.doc''; $text_from_doc = shell_exec(''/usr/local/bin/antiword ''.$document_file);


Solo actualizando el código

<?php /***************************************************************** This approach uses detection of NUL (chr(00)) and end line (chr(13)) to decide where the text is: - divide the file contents up by chr(13) - reject any slices containing a NUL - stitch the rest together again - clean up with a regular expression *****************************************************************/ function parseWord($userDoc) { $fileHandle = fopen($userDoc, "r"); $word_text = @fread($fileHandle, filesize($userDoc)); $line = ""; $tam = filesize($userDoc); $nulos = 0; $caracteres = 0; for($i=1536; $i<$tam; $i++) { $line .= $word_text[$i]; if( $word_text[$i] == 0) { $nulos++; } else { $nulos=0; $caracteres++; } if( $nulos>1996) { break; } } //echo $caracteres; $lines = explode(chr(0x0D),$line); //$outtext = "<pre>"; $outtext = ""; foreach($lines as $thisline) { $tam = strlen($thisline); if( !$tam ) { continue; } $new_line = ""; for($i=0; $i<$tam; $i++) { $onechar = $thisline[$i]; if( $onechar > chr(240) ) { continue; } if( $onechar >= chr(0x20) ) { $caracteres++; $new_line .= $onechar; } if( $onechar == chr(0x14) ) { $new_line .= "</a>"; } if( $onechar == chr(0x07) ) { $new_line .= "/t"; if( isset($thisline[$i+1]) ) { if( $thisline[$i+1] == chr(0x07) ) { $new_line .= "/n"; } } } } //troca por hiperlink $new_line = str_replace("HYPERLINK" ,"<a href=",$new_line); $new_line = str_replace("/o" ,">",$new_line); $new_line .= "/n"; //link de imagens $new_line = str_replace("INCLUDEPICTURE" ,"<br><img src=",$new_line); $new_line = str_replace("/*" ,"><br>",$new_line); $new_line = str_replace("MERGEFORMATINET" ,"",$new_line); $outtext .= nl2br($new_line); } return $outtext; } $userDoc = "custo.doc"; $userDoc = "Cultura.doc"; $text = parseWord($userDoc); echo $text; ?>


Tengo el mismo caso, supongo que voy a utilizar un hosting barato de 50 mega windows con dominio libre para usarlo para convertir mis archivos, para el servidor PHP. Y vincularlos es fácil. Todo lo que necesita es crear una página ASP.NET que reciba el archivo doc por correo postal y lo responda a través de HTTP, por lo que CURL lo haría.


Una forma de manipular archivos de Word con PHP que puede resultar interesante es con la ayuda de PHPDocX. Puede ver cómo funciona si echa un vistazo a su tutorial en línea . Puede insertar o extraer contenidos o incluso combinar varios archivos de Word en uno solo.


esto funciona con vs <office 2007 y su PHP puro, sin basura COM, todavía tratando de figurar 2007

<?php /***************************************************************** This approach uses detection of NUL (chr(00)) and end line (chr(13)) to decide where the text is: - divide the file contents up by chr(13) - reject any slices containing a NUL - stitch the rest together again - clean up with a regular expression *****************************************************************/ function parseWord($userDoc) { $fileHandle = fopen($userDoc, "r"); $line = @fread($fileHandle, filesize($userDoc)); $lines = explode(chr(0x0D),$line); $outtext = ""; foreach($lines as $thisline) { $pos = strpos($thisline, chr(0x00)); if (($pos !== FALSE)||(strlen($thisline)==0)) { } else { $outtext .= $thisline." "; } } $outtext = preg_replace("/[^a-zA-Z0-9/s/,/./-/n/r/t@///_/(/)]/","",$outtext); return $outtext; } $userDoc = "cv.doc"; $text = parseWord($userDoc); echo $text; ?>


www.phplivedocx.org es un servicio basado en SOAP que significa que siempre debe estar en línea para probar los archivos. Tampoco tiene suficientes ejemplos para su uso. Extrañamente encontré solo después de 2 días de descarga (también se requiere Zend Framework) que es un programa basado en SOAP (¡me maldijo!) ... Creo que sin COM simplemente no es posible en un servidor Linux y la única idea es cambie el archivo doc en otro archivo utilizable que PHP puede analizar ...


phpLiveDocx es un componente de Zend Framework y puede leer y escribir archivos DOC y DOCX en PHP en Linux, Windows y Mac.

Vea el sitio web del proyecto en:

http://www.phplivedocx.org