Avatar billede -jesper- Nybegynder
08. januar 2004 - 13:12 Der er 7 kommentarer og
1 løsning

Hvordan laver og åbner jeg et word dokument med php?

Hejsa..

Jeg er løbet ind i følgende problem. Jeg har nogle data (2 arrays af 10 felter hver) som skal sættes ind i et Word dokument vha php, der bliver sendt direkte til klienten hvor Word skal starte.

Jeg har kigget på dette script:
http://www.phpbuilder.com/columns/yunus20031124.php3

Det virker dog ikke, muligvis fordi scriptet måske skal køre på serveren så der er COM-adgang til skabelon-documentet eller lign.??

Nå men er der nogle her, som kender/kan et eksempel hvor man kan indsætte data fra en hjemmeside i en predefineret word-fil (vha. bogmærker og der ligger på serveren) og dernæst få klientens computer til at starte Word op og vise indholdet?
Avatar billede sthen Nybegynder
08. januar 2004 - 13:27 #1
Jeg ved at el_barto har puslet med noget i den stil før
Avatar billede detox Nybegynder
08. januar 2004 - 14:37 #2
Jeg kan se der er et fint eksempel på:
http://dk2.php.net/manual/en/class.com.php (Eksempel 1)

Lidt tilrettet virker det nogenlunde for mig:

<?php
// Sti til placering af word dokument
$docsti = "C:/Foxserv/www/test2/test.doc";
// starting word
$word = new COM("word.application") or die("Unable to instanciate Word");
//bring it to front
$word->Visible = 1;
//open an empty document
$word->Documents->Add();
//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs($docsti);
//closing word
$word->Quit();
//free the object
$word->Release();
$word = null;
header('Location: ' . $docsti);
?>
Avatar billede -jesper- Nybegynder
08. januar 2004 - 15:52 #3
Jeg er lige gået igang med at prøve det og tænkte jeg ville starte småt med:

$word = new COM("word.application") or die("Unable to instanciate Word");
echo "Loaded Word, version {$word->Version}\n";

Men jeg får følgende fejl:

Warning: main(): Unable to lookup Version: Der opstod en fejl under forsøg på at få adgang til OLE-registreringsdatabasen. in c:\inetpub\wwwroot\date\index.php on line 104

Nogen idéer til hvorfor den gør det? Det er en Word97 der ligger på serveren - den er måske for gammel?
Avatar billede detox Nybegynder
08. januar 2004 - 17:18 #4
Jeg tror ikke din word er for gammel, det er nok mere problemet at få adgang til: OLE-registreringsdatabasen. Er du logget på som 'Administrator'?
Jeg fandt dette eksempel, der netop gør brug af bogmærker, og det fungerer fint her:

<?php
// Some servers may have an auto timeout, so take as long as you want.
set_time_limit(0);

// Show all errors, warnings and notices whilst developing.
error_reporting(E_ALL);

// Used as a placeholder in certain COM functions where no parameter is required.
$empty = new VARIANT();

// Load the appropriate type library.
com_load_typelib('Word.Application');

// Create an object to use.
$word = new COM('word.application') or die('Unable to load Word');
print "Loaded Word, version {$word->Version}\n";

// Open a new document with bookmarks of YourName and YourAge.
$word->Documents->Open('C:/Unfilled.DOC');

// Fill in the information from the form.
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourName'); // Note use of wdGoToBookmark, from the typelibrary and the use of $empty.
$word->Selection->TypeText($_GET['YourName']);

$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'YourAge');
$word->Selection->TypeText($_GET['YourAge']);

// Save it, close word and finish.
$word->Documents[1]->SaveAs("C:/{$_GET['YourName']}.doc");
$word->Quit();
$word->Release();
$word = null;
print "Word closed.\n";
?>
Avatar billede -jesper- Nybegynder
09. januar 2004 - 12:54 #5
Jeg prøver lige eksemplet for at se hvad der sker. Der hvor den bruger "Open('C:/Unfilled.DOC');" ligger det dokument så på klient-maskinen eller på webserveren??
Avatar billede detox Nybegynder
09. januar 2004 - 13:24 #6
På serveren vil jeg mene. Jeg har kun testet det lokalt.
Avatar billede -jesper- Nybegynder
09. januar 2004 - 15:22 #7
Jeg tror at i eksemplet, der ligger filen lokalt - ligesom din test. Men det lykkedes mig faktisk at finde en anden og bedre løsning.

Jeg laver en html-fil med det indhold der nu skal være (dvs. design, php-variabler osv.) for dernæst at gemme filen på serveren som en doc-fil. Klienten får så præsenteret et link til denne fil og så åbner den word automatisk når der klikkes på den.. :oD

Tusind tak for hjælpen, detox - jeg var ikke kommet på det uden din hjælp. Hvis du skriver et svar, så får du lige lidt point ;o)
Avatar billede detox Nybegynder
09. januar 2004 - 15:24 #8
Ok, lyder som en rimelig løsning og velbekommen c",)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester