Der folgende Beitrag wurde am 29. 09. 2005, 09:46 Uhr von Toto veröffentlicht.
Hallo
ich möchte über die Schnittstelle COM ein Word Dokument öffnen und eine Tabelle erstellen lassen.
Hier mal mein Code:
<?php
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
$word->Visible = 1;
$word->Documents->Add();
echo "geöffnet";
print "Editing Fields";
$Field = $word->ActiveDocument->Fields(1);
$fieldData = $Field->Result;
$fieldData->Text = "meinTest";
$Field = $word->ActiveDocument->Fields(2);
$fieldData = $Field->Result;
$fieldData->Text = "test2";
$word->Documents[1]->SaveAs('C:/test.doc');
$word->Documents[1]->Close();
echo "geschlossen";
$word->Quit();
$word = null;
?>
Das Problem ist, es wird ein Dokument geöffnet aber leider keine Tabelle angelegt. was mache ich falsch??
Vielen Dank
Toto
Der folgende Beitrag wurde am 29. 09. 2005, 12:04 Uhr von Axel Richter veröffentlicht.
Hallo,
> ich möchte über die Schnittstelle COM ein Word Dokument öffnen und eine Tabelle erstellen lassen.
> Hier mal mein Code:
> <?php
> $Field = $word->ActiveDocument->Fields(1);
^Das ist eine Collection (Auflistung) aller Felder im aktiven Word-Dokument, also solcher Objekte, die man mit dem Menübefehl "Einfügen-Feld" in ein Word-Dokument einfügen kann. Mit einer Tabelle hat das nichts zu tun.
> Das Problem ist, es wird ein Dokument geöffnet aber leider keine Tabelle angelegt. was mache ich falsch??
Nun, zunächst mal hast Du ein leeres Dokument. Du musst also erst mal eine Tabelle einfügen.
[VBA]
Sub Tabelle_in_leeres_Dokument()
Set mytable = ActiveDocument.Tables.Add(ActiveDocument.Range(), 2, 3)
mytable.Cell(1, 1).Range.Text = "Name"
mytable.Cell(1, 2).Range.Text = "Vorname"
mytable.Cell(1, 3).Range.Text = "Anschrift"
mytable.Cell(2, 1).Range.Text = "Richter"
mytable.Cell(2, 2).Range.Text = "Axel"
mytable.Cell(2, 3).Range.Text = "..."
End Sub
[/VBA]
In PHP wäre das wohl:
...
$mytable = $word->ActiveDocument->Tables->Add(ActiveDocument->Range(), 2, 3)
$mytable->Cell(1, 1)->Range->Text = "Name"
...
ohne Gewähr.
Tipp: Erstelle zunächst ein Makro mit Word, indem Du die Aktionen einfach aufzeichnen lässt. Analysiere dann den VBA-Quellcode und setze diesen dann in PHP-COM-Syntax um.
viele Grüße
Axel
Der folgende Beitrag wurde am 29. 09. 2005, 12:22 Uhr von Axel Richter veröffentlicht.
Hallo,
> In PHP wäre das wohl:
>
> ...
> $mytable = $word->ActiveDocument->Tables->Add(ActiveDocument->Range(), 2, 3)
*grr*
$mytable = $word->ActiveDocument->Tables->Add($word->ActiveDocument->Range(), 2, 3)
> $mytable->Cell(1, 1)->Range->Text = "Name"
> ...
>
immer noch ohne Gewähr. ;-))
viele Grüße
Axel
Der folgende Beitrag wurde am 29. 09. 2005, 13:19 Uhr von Toto veröffentlicht.
Super es hat geklappt.
Vielen Dank
Toto
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4