Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP i Office OLE via COM
alien7
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.12.2003

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
alien7
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.12.2003

Ostrzeżenie: (0%)
-----


No właśnie robię to w ten sposób, jednak problem tkwi właśnie w przenoszeniu kodu do php :|
Go to the top of the page
+Quote Post
alien7
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.12.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:16