Da php a word

  • Creatore Discussione Creatore Discussione gracito
  • Data di inizio Data di inizio

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao a tutti

è possibile esportare i dati di una taballa da php a word?

Vi spiego in php ho una tabella con Id|nome|cognome e possibile esportare i dati in una pagina di word già formattata con all'interno una tabella con tre campi Id|nome|cognome.

Grazie
 
Ho scaricato php ms word, che conteneva 3 file clsWord.php , index.php e readme.txt, gli ho copiati nella cartella htdocs.
E' corretto?
Poi come dal link che mi hai indicato ho inserito questo codice.

PHP:
<?php 
//1. Instanciate Word 
$word = new COM ( "word.application" ) or die( "Unable to instantiate Word" ); 
//2. specify the MS Word template document (with Bookmark TODAYDATE inside) 
$template_file = "C:/php_word.doc" ; 
//3. open the template document 
$word -> Documents -> Open ( $template_file ); 
//4. get the current date MM/DD/YYYY 
$current_date = date ( "m/d/Y" ); 
//5. get the bookmark and create a new MS Word Range (to enable text substitution) 
$bookmarkname = "Cognome" ; 
$objBookmark = $word -> ActiveDocument -> Bookmarks ( $bookmarkname ); 
$range = $objBookmark -> Range ; 
//6. now substitute the bookmark with actual value 
$range -> Text = $cognome ; 
//7. save the template as a new document (c:/reminder_new.doc) 
$new_file = "c:/php_word.doc" ; 
$word -> Documents [ 1 ]-> SaveAs ( $new_file ); 
//8. free the object 
$word -> Quit (); 
$word -> Release (); 
$word = null ; 
?>

mi da questo errore.

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': Memoria disponibile insufficiente per completare l'operazione. ' in C:\Documents and Settings\user\Desktop\xampp-win32-1.7.3\xampp\htdocs\1test.php:3 Stack trace: #0 C:\Documents and Settings\user\Desktop\xampp-win32-1.7.3\xampp\htdocs\1test.php(3): com->com('word.applicatio...') #1 {main} thrown in C:\Documents and Settings\user\Desktop\xampp-win32-1.7.3\xampp\htdocs\1test.php on line 3

Cosa può essere?
 
Da quello che vedo non hai abbastanza memoria RAM per l'esecuzione dello script. Quanta ce n'è sul server che lo ospita? Comunque la mia idea non era esattamente così (anche perché calcola che questo sistema funzionerà finché lo script è su un server Windows che ha installato Word). Io pensavo proprio di sostituire brutalmente il testo con str_replace.
 
Ho provato su un pc con 2 gb di Ram, non mi apre neanche la pagina.

Mi spiegheresti un po in dettaglio la tua idea?


Ti ricordo che devo estrarre da un db tre dati Id|nome|cognome, e visualizzarli in word.
In word ho creato una pagina con i segnalibri id, cognome, nome e salvata come php_word.doc. Comunque mi interessa per ora che funzioni con word.

Grazie
 
Io pensavo di creare un semplicissimo file di Word con, ad esempio, le stringhe ID, NOME e COGNOME. E poi semplicemente fare:
PHP:
<?php
$contents = file_get_contents('nomefile.doc');

$contents = str_replace('ID', 'id', $contents);
$contents = str_replace('NOME', 'nome', $contents);
$contents = str_replace('COGNOME', 'cognome', $contents);

$fp = fopen('nuovofile.doc', 'a+');
fwrite($fp, $contents);
fclose($fp);
?>
Senza usare bookmark e oggetti COM, ma non sono sicuro che Word memorizzi le stringhe in chiaro. Prova, ma in questo caso le stringhe ID, NOME e COGNOME non devono avere nessun elemento di formattazione tra una lettera e l'altra.
 
Ciao

non riesce a passare i dati ai segnalibro di word.

Ho provato ad inserire in tutti i campi della colonna id del file 'nomefile.doc' il valore 'id'
in tutti i campi della colonna nome il valore 'nome' e in tutti i campi della colonna cognome il valore 'cognome'. Poi ho creato nella pag.php un elenco con più nomi ma il nome che viene passato al file 'nuovofile.doc' è soltanto il primo che si ripete in tutti i campi della colonna nome del file 'nomefile.doc'.
Hai qualche soluzione migliore?
PHP:
<?php
$nome = Array("gino","tino","lino");
foreach ($nome AS $nome1){

$contents = file_get_contents('nomefile.doc'); 

$contents = str_replace('Id', 'ID', $contents); 
$contents = str_replace('Nome', $nome1, $contents); 
$contents = str_replace('Cognome', 'COGNOME', $contents); 

$fp = fopen('nuovofile.doc', 'a+'); 
fwrite($fp, $contents); 
fclose($fp);

}
?>
 
Ultima modifica:
Beh, ovvio che è soltanto il primo che si ripete in tutti i campi. La funzione str_replace serve per sostituire tutte le occorrenze di una stringa con un'altra all'interno di un testo. Il mio sistema va bene se c'è una sola occorrenza dell'ID, del nome del cognome all'interno del testo, altrimenti non so proprio come fare.
 

Discussioni simili