Как выполнить замену строки в текстовом документе с помощью командной строки (CLI) - PullRequest
0 голосов
/ 05 августа 2011

У меня есть шаблон текстового документа, который мне нужно найти и заменить.Например, мне нужно заменить <address 1> на 1 Test Street.

Я попытался сделать это с помощью макроса, который я могу запустить из командной строки, но вы не можете передать аргументы и, следовательно,не могу отредактировать ни шаблон, который вы ищете, ни то, что нужно заменить.

В конечном итоге мне нужно было использовать PHP, поэтому я искал что-то, что я могу просто вызвать с помощью exec, я нашел библиотеку с именемPHPWord, который выглядел очень полезным, но он работал, заключался в том, чтобы анализировать файл .doc в xml-файл, и это не работало должным образом, что приводило к тому, что слова разделялись пополам и, следовательно, не годились для str_replace.

НаконецЯ смотрел на использование VBScript, у меня нет никакого опыта с этим и не мог заставить его работать.

Ответы [ 3 ]

1 голос
/ 23 июля 2012

Заменить существующую строку текста в документе Word другим текстом на PHP с сохранением всех стилей Word, теперь довольно просто, если вы используете PHPDocX: Замена текста в документе Word на PHP

Эту процедуру реализовать сложнее, чем может показаться из-за того, как Word (стандарт OOXML) разбивает содержимое абзаца на разные фрагменты текста.Например, одно слово может быть разбито на разные фрагменты текста с собственной разметкой, если оригинальный редактор документа Word внес некоторые исправления или даже если он нажал клавишу возврата.

Метод searchAndReplace в PHPDocX ищет определенную строку текста, извлекает ее стили Word и восстанавливает соответствующий параграф с текстом замены, сохраняя все исходные стили.

Можно выбрать поиск и замену всего документа, включаяверхние и нижние колонтитулы, сноски, комментарии и т. д., или, если важна производительность, можно указать деталь.Тем не менее, этот метод довольно быстр, и замена текстовой строки в документе Word на сто страниц может занять несколько сотых долей секунды.

0 голосов
/ 09 августа 2011

Почему бы вам не использовать Interop для доступа к документу Word.Для этого вам придется использовать .NET, и вы можете создать консольное приложение.

Взгляните на Пространство имен классов взаимодействия и , например, .

0 голосов
/ 05 августа 2011

Я не очень знаком с php или VBScript

Задача проста в python ::

#!/usr/bin/python
import sys
if __name__ == '__main__':
    filename = sys.argv[1]
    f = open(filename,'r')
    output = f.read().replace('<Address 1>','1 Test Street')
    f.close()
    f = open('filename','w')
    f.write(output)
    f.close()

Запустите файл в командной строке как $ python thisfile.py filename

...