Найти - Пользователи
Полная версия: IronPython, работа с Word
Начало » Python для новичков » IronPython, работа с Word
1
svas
Не работат такой код
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)
Пример брал здесь
https://gist.github.com/1049552

В файле src.doc должно поменяться на q.
Код отрабатывает без ошибок, но в dst.doc - точная копия src.doc.
Windows 7 x86, Office 2007, IronPython 2.7.3
В чем может быть проблема?
svas
Это уже 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
svas
Ну может все таки кто-нибудь сталкивался с подобной проблемой или подскажите рабочий код, который ищет и меняет содержимое в документе Word. На всякий случай прикрепил файл, с которым код не работает.
ave
У меня работает :)
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB