PHP - Word fil med info fra database

Tags:    php word html database

<< < 12 > >>
Hey Udviklere!

Jeg har et word dokument af med en skabelon af en faktura.

Jeg vil meget gerne gøre således at jeg kan trykke på en knap, så jeg kommer til f.eks: printInvoice.php?invoice_id=10.

Derfra skal den så hente fra databasen hvor nummeret 10 befinder sig, og indskrive navn, adresse, postnr. osv osv. Men hvordan gør jeg dette? Åbner jeg kildekoden fra .doc dokumentet via Notepad++ så er det en meget ulæselig kode.

Hvad ville være den smarteste måde at få HELE HTML koden fra .doc filen? Gemme den i et mere læsevenligt format?

Glæder mig til at høre jeres svar!



13 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
OK, nu Googlede jeg det altså lige og fandt dette, som ser ud til at virke - det er HTML, der såmænd bare gemmes/åbnes som Word-dokument:

Fold kodeboks ind/udPHP kode 


http://lmgtfy.com/?q=create+word+document+using+php ;-)

PS: Har testet på min server, hvor det virker fint.

Hvis det kun er ham selv der skal åbne de filer, så er det fint. Men ellers kan det næppe være en god ting at snyde browseren/klienten.

edit:

gennemgang af den grundlæggende filstruktur i docx (hvilket du også kan lure, ved at omdøbe en docx fil til .zip)
http://msdn.microsoft.com/en-us/library/bb266220(v=office.12).aspx#office2007wordfileformat_walkthroughcreatingawordxmlformatfile





Indlæg senest redigeret d. 18.04.2011 16:11 af Bruger #955
Sidebemærkning: Der er ingen HTML-kode i en Word-fil. Word kan konvertere det til HTML, men det er stort set ulæseligt.

Men dit spørgsmål er lidt uklart. Skal knappen være i Word-filen? Skal knappen hente noget data fra en MySQL-database og indsætte noget info i Word-filen?

Generelt vil det smarteste være at gemme Word-filen som txt-fil; det er et format, som PHP nemt kan læse.



Indlæg senest redigeret d. 18.04.2011 14:44 af Bruger #69
Nej jeg står og skal lave en ny funktion til mit kundekartotek. Har også prøvet nogle af de muligheder der er i word "webpage" etc. men det virker totalt dårligt og fucker koden helt op.

Så jeg må vel bare efterligne og bygge det samme op i HTML.

Skal jeg så på min showInvoice.php fil ændrer content-type til dette:

header('Content-type: application/doc');

? Så brugeren får muligheden mellem at åbne eller gemme fil?

Håber du forstår.

Og tak for dit hurtige svar!



Indlæg senest redigeret d. 18.04.2011 14:53 af Bruger #16320
Går udfra du mener:

PHP fil -> åbner word skabelon -> Henter data fra DB -> skriver nyt word doc

Det kan nemt blive tungt og kejtet, så overvej om det er den rette måde at gøre det på.

Hvis du vil holde fast i din oprindelige idé, så kan du gemme dit word dokument som xml - det er fuldstændig det samme som docx, bare ikke komprimeret. Herefter kan du lave en fix søg og erstat.



OK. Jeg vil lige tjekke det ud - men det skal gemmes som .doc stadig.

Tak for dit svar, men jeg oplever lidt problemer.

Jeg starter min kode ud således:

<?php
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=document_name.doc");

echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<?mso-application progid="Word.Document"?>';
?>

Efterfulgt af den lange XML kode med mit indhold i.

Men når jeg åbner filen så skriver den:

The document document_name-1 cannot be opened because there are problems with the contents.

Details: Ugyldigt xml-tegn.
Location: Line:1, Column: 1038

Det har nok noget at gøre med at jeg gemte indholdet som .XML og efterfølgende prøver at kalde filen doc?



Indlæg senest redigeret d. 18.04.2011 15:31 af Bruger #16320
Jeg kender ikke selv metoden for at generere Word-filer via PHP - men jeg tror ikke, det er tilstrækkeligt at anvende content type-headeren.

Tjek evt http://www.phpdocx.com/, som findes i en gratis version. Det er et PHP-bibliotek lavet til netop at generere Word-filer, men jeg har ikke selv prøvet det.



Indlæg senest redigeret d. 18.04.2011 15:33 af Bruger #69
-



Er der nogen bestemt grund til, at det skal være et word dokument?

Og såfremt - skal det være doc eller docx? Der er stor forskel på de 2 formater, hvis vi skal pille i dem med php.

Kan det gøres i et andet format? F.X pdf?

Evt. se om det her kan hjælpe dig:
http://www.phpdocx.com/
Med den funktionalitet du efterspørger, kan du nok ikke klare dig med gratis versionen og du skal nok kaste 90$ efter Pro versionen. Dermed ikke sagt, at der ikke kunne være et billigere/gratis alternativ, men deres produkt virker overbevisende.

edit:

Det har nok noget at gøre med at jeg gemte indholdet som .XML og efterfølgende prøver at kalde filen doc?


Præcis. Indhold og indholdsbeskrivelsen skal stemme overens. Så enten skal XML dokumentet konverteres til doc, eller vi skal ændre(eller udelade) header til xml.



Indlæg senest redigeret d. 18.04.2011 15:36 af Bruger #955
Jeg ønsker ikke at købe et produkt da jeg mener min problem-stilling er yderst simpel og blot en hjernevrider.

Hvad skal content-type være i showinvoice?

header("Content-type: application/xml");

eller

header("Content-type: text/xml");

?

Det kan også godt blive til en PDF fil, man skal bare efterfølgende have mulighed for at kunne redigere i filen.



OK, nu Googlede jeg det altså lige og fandt dette, som ser ud til at virke - det er HTML, der såmænd bare gemmes/åbnes som Word-dokument:

Fold kodeboks ind/udPHP kode 


http://lmgtfy.com/?q=create+word+document+using+php ;-)

PS: Har testet på min server, hvor det virker fint.



Indlæg senest redigeret d. 18.04.2011 16:03 af Bruger #69
<< < 12 > >>
t