Форум сайта python.su
9
Не работат такой код
import sys
import clr
import System
from System import DateTime
clr.AddReference("Microsoft.Office.Interop.Word")
import Microsoft.Office.Interop.Word as Word
def doc_replace_text(source_filename, tokens, values, destination_filename):
missing = System.Type.Missing
replaceAll = Word.WdReplace.wdReplaceAll
word_application = Word.ApplicationClass()
word_application.visible = False
document = word_application.Documents.Open(source_filename)
for i in range(len(tokens)):
for r in document.StoryRanges:
#print "i = %d, tokens[i] = %s, values[i] = %s" % (i, tokens[i], values[i])
r.Find.Text = tokens[i]
r.Find.Replacement.Text = values[i]
r.Find.Wrap = Word.WdFindWrap.wdFindContinue
r.Find.Execute(missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, replaceAll, missing, missing, missing, missing)
document.SaveAs(destination_filename)
document.Close()
document = None
word_application.Quit()
word_application = None
source_filename = "C:\\tmp\\src.doc"
destination_filename = "C:\\tmp\\dst.doc"
tokens = ["[T1]"]
values = ['q']
doc_replace_text(source_filename, tokens, values, destination_filename)
Офлайн
9
Это уже CPython. Тоже не работает.
import win32com.client
app = win32com.client.Dispatch("Word.Application")
app.Visible = False
doc = app.Documents.Open("c:\\tmp\\src.doc")
find = doc.Content.Find
find.Execute(Forward=True, Replace=1, FindText='T1', ReplaceWith='HAHAHAHAHA!')
doc.SaveAs("c:\\tmp\\dst.doc")
doc.Close()
doc = None
app.Quit()
app = None
Офлайн
9
Ну может все таки кто-нибудь сталкивался с подобной проблемой или подскажите рабочий код, который ищет и меняет содержимое в документе Word. На всякий случай прикрепил файл, с которым код не работает.
Прикреплённый файлы:
src.doc (25,5 KБ)
Офлайн
0
У меня работает :)
def doc_replace_text(file_in, file_out, find, replace): import win32com.client as win32 app = win32.Dispatch("Word.Application") app.Visible = True wdFindContinue = 1 wdReplaceAll = 2 app.Documents.Open(file_in) for i in range(len(find)): app.Selection.Find.Execute(find[i], False, False, False, False, False,True,\ wdFindContinue, False, replace[i], wdReplaceAll) app.ActiveDocument.SaveAs(file_out)
Офлайн