PhpWord ersetzt keinen Text

8

Ich habe eine docx Datei und ich muss etwas Text ersetzen. Dies geschieht innerhalb des Codeigniter-Frameworks; Hier ist der Code:

%Vor%

Wenn ich die neue Datei öffne, bekomme ich immer noch "Ersetzename" von "Neu". "Ersetzename" ist mit Verdana-Schrift, 9pt Schriftgröße (keine Unterstreichung oder fett) formatiert. Warum es nicht funktioniert? Das Entfernen von $ {} aus der setValue-Funktion (und aus der doc-Datei) funktioniert

    
pindol 28.05.2013, 14:11
quelle

7 Antworten

4

Ich fand die Lösung in Ссылка ... das Problem scheint zu sein, wenn Word seinen eigenen Code generiert.

für die Lösung, benennen Sie einfach die Erweiterung Ihrer Vorlage in zip um, checken Sie eine Datei mit dem Namen "document.xml" in den Ordner "word" ein und suchen Sie Ihren Code-Wert ... sollte so aussehen:

%Vor%     
alec 30.01.2014 16:29
quelle
4

Es stellt sich heraus, dass beim Hinzufügen von Text zu einer Word-Datei manchmal zusätzliche Tags in der zugrunde liegenden XML-Datei erstellt werden. So (Pseudocode) ${NAME} kann <tag1>${</tag1><tag2>NAME</tag2><tag3>}</tag3>

werden

Aus diesem Grund kann phpword Ihre Nadel nicht finden.

Ich benutze einen Mac mit Microsoft Word und ich kann einfach den gesamten Inhalt der Word-Datei ausschneiden und sie wieder einfügen.

Word erstellt daraufhin die zugrunde liegende XML-Datei neu, in der $ {NAME} 1 Tag statt 3 ist.

    
Marc 22.02.2015 14:09
quelle
3

Fügen Sie einfach 2 Funktionen zur Datei "TemplateProcessor.php"

hinzu %Vor%

Wie zu verwenden: Verwenden Sie ein Array als einzigen Parameter der Funktion "setValueAdvanced", wobei "key" - ein Wort, das wir ersetzen wollen, und "value" - eine Phrase, die wir einfügen möchten. Wichtig: Innerhalb einer MS Word-Datei verwenden Sie "$ {word_to_replace}", um ein Wort, das wir ersetzen möchten, zu "markieren", aber der Schlüssel eines Arrays sollte "word_to_replace" sein, ohne "$ {}"

Beispielcode:

%Vor%     
andrew_jackson 18.04.2016 17:53
quelle
2

Sie können die neue Template-Klasse mit der neuen Methode setValue ()

verwenden %Vor%

Neue Methode kann sie ersetzen setValue ('test5', 'MyValue');

Lade eine neue Klasse herunter: Ссылка

    
Korimizu 13.02.2014 09:53
quelle
0

hier versuche ich und arbeite gut,

Die Funktion

setValue funktioniert nicht, da sie das Format des Wortes nach dem Generieren in das Web enthält. damit der Text, den du ersetzen kannst, nicht gefunden wird.

die Lösung ist Gib einfach dein $ {replaceKey} in den Editor ein und kopiere es in deine_Tabelle.docx es funktioniert für mich.

notepad macht alle Word-Formate nicht in der Vorlage enthalten, so dass die Funktion setValue sie wie erwartet finden kann.

Ich hoffe, es hilft euch.

    
wiqi 24.01.2017 10:09
quelle
0

Ich habe eine kreisförmige Vorlage aus der Vorlage erstellt, in der ich die Felder mit den erforderlichen $ {Value} -Werten ausgefüllt habe. Ich fusionierte und speicherte das Ergebnis als neue Vorlage. Also hat er die Wertsachen akzeptiert.

    
Imi 17.09.2017 10:58
quelle
0

Meine Lösung

%Vor%

}

%Vor%     
Orazbaev Ayan 12.01.2018 12:21
quelle

Tags und Links