PDA

View Full Version : سوال: replace کردن در word



cycloneso
جمعه 15 اردیبهشت 1391, 10:21 صبح
سلام
من میخوام اطلاعاتی از دیتابیس بگیرم و در جاهای مشخصی در یک فایل word جایگزین کلمه های مشخصی کنم. اگه کسی کد ارتباط با فایل از طریق آذرس و جایگزینی کلمه رو داره ممنون میشم

harani
شنبه 13 خرداد 1391, 16:46 عصر
خواهشمندم اگر جواب سوال رو دریافت کردید به کاربر harani اطلاع دهید ممنون از شما .

tooraj_azizi_1035
شنبه 13 خرداد 1391, 18:51 عصر
سلام
http://msdn.microsoft.com/en-us/library/f65x8z3d(v=vs.80).aspx[CSHARP]




object missing = System.Reflection.Missing.Value;
oWordApplic.Visible = false;
Microsoft.Office.Interop.Word.Range range = oWordApplic.ActiveDocument.Content;
//oWordApplic.Selection.Find.ClearFormatting();
//Microsoft.Office.Interop.Word.Selection sel = oWordApplic.Selection;
object findtext = Source;
object f = false;
object findreplacement = "NewString";
object findforward = false;
object findformat = true;
object findwrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindCon tinue;
object findmatchcase = false;
object findmatchwholeword = false;
object findmatchwildcards = false;
object findmatchsoundslike =false;
object findmatchallwordforms = false;
object findreplace = Microsoft.Office.Interop.Word.WdReplace.wdReplaceA ll;

range.Find.Execute(ref findtext,ref findmatchcase,ref findmatchwholeword,
ref findmatchwildcards,
ref findmatchsoundslike, ref findmatchallwordforms, ref findforward,
ref findwrap, ref findformat, ref findreplacement, ref findreplace, ref missing, ref missing,
ref missing,
ref missing);

hamed_hossani
یک شنبه 14 خرداد 1391, 02:23 صبح
سلام
این کار با bookmark در word اتجام میشه!
قبلا می خواستم یاد بگیرم وقت نکردم.

NaserHadi
دوشنبه 02 مرداد 1391, 12:30 عصر
با سلام
آقای عزیزی من با همین کدها فایل ورد رو باز کرده و یک متن خاص رو عوض کرده ام
ولی هر جا که داخل فایل ورد یک تکست باکس باشه متن داخل اونو نمیتونه بخونه آیا شما نظری در این مورد دارید؟

tooraj_azizi_1035
دوشنبه 02 مرداد 1391, 13:28 عصر
برای این کار باید به اون TexBox ها جداگانه دست پیدا کنید و برای این کار باید خاصیت Shapes کار کنید.
مثلاً میشه با LINQ این کارو کرد:

var Query=from shape in Document.Shapes
where shape.Name=="TextBox1"
select shape;

حالا می تونید Replace کنید. من تست نکردم اگه جواب نداد می تونید خاصیت InlineShapes رو چک کنید.

بیشتر:
http://msdn.microsoft.com/en-us/library/6b9478cs

private void SearchReplace()
{
Word.Find findObject = Application.Selection.Find;
findObject.ClearFormatting();
findObject.Text = "find me";
findObject.Replacement.ClearFormatting();
findObject.Replacement.Text = "Found";

object replaceAll = Word.WdReplace.wdReplaceAll;
findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing, ref missing);
}

NaserHadi
سه شنبه 03 مرداد 1391, 10:31 صبح
با تشکر از پاسخ شما
من تست کردم ولی نشد اون کدی هم که برای Linq فرستاده بودید تست نکردم ولی شاید امکان پذیر نباشه چون من تعداد زیاد سند دارم و نام هر تکست باکس رو نمیشه داد

NaserHadi
سه شنبه 03 مرداد 1391, 10:33 صبح
من کد ها رو هم نوشتم تا یه نگاهی به اونا باندازید

NaserHadi
سه شنبه 03 مرداد 1391, 10:36 صبح
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
Document doc = newDocument();

object missing = System.Type.Missing;
try
{
doc = word.Documents.Open(ref fileName,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing);

doc.Activate();

foreach (Microsoft.Office.Interop.Word.Range tmpRange in doc.StoryRanges)
{

tmpRange.Find.Text = strText;
tmpRange.Find.Replacement.Text = strReplacementText;
tmpRange.Find.Wrap = Microsoft.Office.Interop.Word.WdFindWrap.wdFindCon tinue;

object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceA ll;

tmpRange.Find.Execute(
ref missing, ref missing, ref missing,ref missing, ref missing,
ref missing, ref missing,ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing, ref missing);
}
// Save the changes
doc.Save();
// Close the doc and exit the app
doc.Close(ref missing, ref missing, ref missing);
word.Application.Quit(ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
doc.Close(ref missing, ref missing, ref missing);
word.Application.Quit(ref missing, ref missing, ref missing);
}
}

NaserHadi
سه شنبه 03 مرداد 1391, 10:41 صبح
foreach (Microsoft.Office.Interop.Word.Range tmpRange in doc.StoryRanges)
ضمنا من در حلقه فوق این کدها رو هم تست کردم doc.Shapes doc.inlineShapes
ولی جواب نداد