PDA

View Full Version : باز کردن Word و HighLight کردن کلمات یافت شده



behzadkhan
سه شنبه 08 اردیبهشت 1394, 11:27 صبح
با سلام

دوستان عزیز

================================================== ================================================== ========
قرار هست بعد از پیدا کردن یک فایل ورد، که کلمات مورد نظر در آن هست. خود فایل ورد با استفاده از نرم افزار Microsoft Word Office باز شود. و اون کلمات Highlight شوند.(بصورت اتوماتیک بدون دخالت کاربر)
================================================== ================================================== ========
در واقع با این کار می خواهیم به کاربر کمک کنیم که بعد از جستجوی کلمات درون یکسری فایل ورد آن ها را پیدا کرده و در یک کنترلی مثل گریدویو نشان دهد. حالا وقتی روی هر کدام از سطر هایش دابل کلیک کردیم فایل ورد را باز کند و اون کلمات را Highlight شوند.

البته یک مطلبی پیدا کردم که بعد از پیدا کردن فایل مورد نظر از اون فایل یک کپی می گیرد و درون اون فایل کپی رنگ زمینه اون کلمات را مثلا زرد رنگ می کند. اما من نمی خواهم در فایل هیچ تغییری ایجاد کنم بلکه می خواهم دقیقا مثل اینکه درون خود نرم افزار ورد وقتی یک کلمه را جستجو می کنیم نتایج یافت شده را فقط Highlight شوند و هیچ تغییری ایجاد نشود.

لینک اون کد با استفاده از کامپوننت Aspose:
http://www.aspose.com/docs/display/wordsnet/How+to+Find+and+Highlight+Text

================================================== =================

حالا به شخصه با استفاده از رفرنس استاندارد

Microsoft.Office.Interop.Word

می توانم یک فایل ورد را با استفاده از نرم افزار ورد باز کنم ولی نمی توانم کلمه یا کلماتی را Highlight کنم.

================================================== ==================

مطمئنا روش های زیادی برای کار با فایل های ورد وجود دارد.

از هر گونه راهنمایی از هر روشی استقبال می نمایم.

با تشکر

behzadkhan
سه شنبه 08 اردیبهشت 1394, 18:01 عصر
با سلام

دوستان عزیز

این راه را پیدا کردم:


object fileName = AppDomain.CurrentDomain.BaseDirectory + "English.docx";
object textToFind = "Microsoft";
object readOnly = true;
object missObj = Missing.Value;
Word.Application word = new Word.Application();
Word.Document doc = new Word.Document();
object missing = Type.Missing;
try
{
doc = word.Documents.Open(ref fileName, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj, ref missObj);
doc.Activate();




object matchPhrase = false;
object matchCase = false;
object matchPrefix = false;
object matchSuffix = false;
object matchWholeWord = false;
object matchWildcards = false;
object matchSoundsLike = false;
object matchAllWordForms = false;
object matchByte = false;
object ignoreSpace = false;
object ignorePunct = false;


object highlightedColor = Word.WdColor.wdColorGreen;
object textColor = Word.WdColor.wdColorLightOrange;


Word.Range range = doc.Range();


bool highlighted = range.Find.HitHighlight(textToFind,
HighlightColor: Word.WdColor.wdColorYellow);


System.Diagnostics.Process.Start(fileName.ToString ());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


با ویژوال استودیو 2010
دات نت فریم ورک 4
و آفیس 2007

تست و اجرا کردم.

با تشکر