Программный поиск + замена в .doc - PullRequest
3 голосов
/ 11 августа 2010

Если мне дан файл .doc со специальными тегами, такими как [first_name], как мне заменить все вхождения этого файла чем-то вроде «Clark»? Простая двоичная замена работает, только если строка замены имеет точно такую ​​же длину.

Ответы на Haskell, C и C ++ будут наилучшими, но подойдет любой скомпилированный язык. Я также предпочел бы сделать это без внешней библиотеки, так как она должна быть развернута в Windows и Linux, а кроссплатформенная обработка зависимостей - сука.

Подводя итог ...

.doc -> magic program -> .doc with strings replaced

Ответы [ 4 ]

4 голосов
/ 11 августа 2010

Вы можете использовать компонент Word COM («Word.Application») в Windows, чтобы открыть файл, выполнить замены, сохранить файл и закрыть его.Однако это только для Windows и может содержать ошибки.

Еще одна вещь, которую вы можете сделать, это использовать интерфейс командной строки OpenOffice.org для преобразования файла в формат ODF, распаковать файл (ODF - это в основном zip XML), сделайте замену с файлами внутри, повторно заархивируйте файл, и повторно конвертируйте его в формат .doc.Однако OpenOffice.org не всегда правильно читает файлы Word (особенно, если много сложного форматирования) и может затруднить его распространение (у пользователей должен быть либо OpenOffice.org, либо вы должны распространять его вместе со своей программой).

Кроме того, если у вас есть файл в формате .docx, вы можете разархивировать его, выполнить замены и повторно сжать его.

2 голосов
/ 11 августа 2010

Сначала прочитайте Спецификацию документа Word .

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

1 голос
/ 11 августа 2010

Вам, вероятно, придется использовать программирование .Net (VB или C #) для создания объекта Word.Application, а затем использовать объектную модель MS Word для управления вашим документом.

0 голосов
/ 12 августа 2010

Почему вы хотите использовать C / C ++ / Haskell или другой скомпилированный язык?Я не слишком знаком с Haskell, но в целом я бы сказал, что C не является отличным языком для выполнения обработки текста.Многие интерпретируемые языки (Perl, Python и т. Д.) Также имеют мощные библиотеки регулярных выражений, которые подходят для поиска и замены фраз.

При этом, как отмечали другие авторы, вам все равно придетсяразобраться с эксцентриситетом формата .doc.

...