Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP i Office OLE via COM
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
alien7
Od niedawna zacząłem używać php do generowania dokumentów Worda. Wcześniej używałem do tego Perla i musze przyznać, że tam mi to lepiej wychodziło.
O ile proste przykłady jeszcze mogę znaleźć (np. otworz dokument, wpisz cokolwiek, zapisz i wypluj doca) o tyle trudniejsze rzeczy to już raczej wiedza tajemna. Nawet nie radzę sobie z justowaniem tekstu smile.gif
Jednym z podstawowych problemów jest przekazywanie parametrów do metod. Wezmy dodawanie kopert:

Perl
$document->Envelope->Insert( { ExtractAddress => 0,
OmitReturnAddress => 0,
PrintBarCode => 0,
PrintFIMA => 0,
Address => $destination_address,
ReturnAddress => $return_address } );

w parametrze przekazuje sie tablice haszujaca i nie interesuje Cie nawet kolejnosc parametrow. Niestety w php za diabła nie mogę tak zrobić.

php

$document->Envelope->Insert();
$document->Envelope->ReturnAddress=$return_address;
$document->Envelope->Address=$address;

jest to o wiele mniej wygodne a poza tym nie jestem pewny czy zawsze moge wszystkie parametry wywołania metody zastąpić właściwościami
obiektów.

Aktualnie robie korespondencje seryjną. To już jest prawdziwy hardcore.
Tam tych parametrów do metod jest cała masa i uzycie właściwości jest
na maksa niewygodne (jeśli wogóle możliwe - do tej pory nie zadziałało mi więc nie wiem). Inna sprawa to stałe VB takie jak wdXXX - muszę je
eksperymentalnie wypróbowywać, ale to już bardziej problem VB.

Jeśli ktoś ma dostep do jakiś bardziej skomplikowanych przykładów
do php + OLE to byłbym wdzieczny za pomoc.

Pozdrawiam
Łukasz
Seth
Nie wiem czy robisz w ten sposb ale proponuje tworzyc makra rejestrowane i na ich podstawie sprawdzic jakie obiekty i metody sa wywolywane.
Pozniej wystarczy to przeniesc na php.
W msdn.com jest takze wiele informacji na temat stalych i ich wartosci oraz samych obiektow oraz ich metod dostepnych w Officie.
alien7
No właśnie robię to w ten sposób, jednak problem tkwi właśnie w przenoszeniu kodu do php :|
alien7
Nie mogąc sobie poradzić z korespondencją seryjna z Worda
http://forum.php.pl/viewtopic.php?t=8451
postanowilem uzyc Makr Worda. Stworzylem makro generujące
korespondencje seryjna. Z php generuje sobie plik CSV,
ktory jest zrodlem danych. Tworze sobie obiekt COMowy
odpalam makro i zapisuje utworzony dokument. Tak wyglada
teoria, w praktyce jest troche gorzej

Kod:

$word = new COM("word.application") or die("Unable to instantiate Word");

$word->Visible = 0;
$word->DisplayAlerts = 0;

//plik z Makrem
$document = $word->Documents->Open($temporary_file_name1) or die("Cannot open file");

$word->Run("Makro1");

$word->Documents[1]->SaveAs($temporary_file_name1);

$word->Quit();

działa pieknie z lini poleceń. z browsera już nie (wypluwa
pusty plik). Dla mnie to jest totalna paranoja. Siedze nad
tym od 2 dni i nie mam pojecia co to może być.

Byłbym wdzięczny za jakieś wskazówki bo może błądze bez sensu.

Łukasz
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.