सी # में ओपन एक्सएमएल का उपयोग कर शब्द दस्तावेज़ से सटीक शब्द कैसे प्राप्त करें?

मुझे सटीक शब्द खोजने की ज़रूरत है जिसे मैं Word दस्तावेज़ में ओपन एक्सएमएल का उपयोग करके शब्द दस्तावेज़ से प्रतिस्थापित करना चाहता हूं। उपयोगकर्ता के व्यक्तिगत विवरण को कुछ विशेष चरित्र के साथ बदलने का उद्देश्य ताकि यह पाठक को दिखाई न दे।

उदाहरण के लिए, उपयोगकर्ता के पास उसके फॉर्म में उल्लिखित पता है, जो डेटाबेस में संग्रहीत है उनके पास एक शब्द दस्तावेज़ अपलोड किया गया है, शब्द दस्तावेज़ में निम्न प्रकार की स्ट्रिंग भी शामिल है जो उसके पते से मेल खाती है। मेरा उद्देश्य ### के साथ पते से मेल खाना है

साइन इन करें ताकि अन्य उपयोगकर्ता पता नहीं देख सकें। जैसे

 "422, Plot no. 1000/A, The Moon Residency II, Shree Nagrik Co. Op. Society, Sardarnagar, Ahmedabad.

ऐसे अवसर की तलाश में जो मुझे एक व्यक्तित्व बनाने में आगे बढ़ता है जो जनता को प्रभावित करता है और वह भी प्रभावी रूप से। संगठनात्मक रूप से, मैं एक ही काम पर काम करने का प्रयास करता हूं

बिना किसी पेशेवर स्विच किए जा रहे हैं और ऐसे माहौल में काम करना पसंद करेंगे जो सौदा करने के लिए शामिल परिवर्तनीय डोमेन के साथ निरंतर विकास की मांग करता है

साथ में।"

मैं "सह", "ओप" को "#" चिह्न से बदलना चाहता हूं। मेरा आउटपुट यह होगा:

"422, Plot no. 1000/A, The Moon Residency II, Shree Nagrik #. #. Society, Sardarnagar, Ahmedabad.

ऐसे अवसर की तलाश में जो मुझे एक व्यक्तित्व बनाने में आगे बढ़ता है जो जनता को प्रभावित करता है और वह भी प्रभावी रूप से। संगठनात्मक रूप से, मैं एक ही काम पर काम करने का प्रयास करता हूं

बिना किसी पेशेवर स्विच किए जा रहे हैं और ऐसे माहौल में काम करना पसंद करेंगे जो सौदा करने के लिए शामिल परिवर्तनीय डोमेन के साथ निरंतर विकास की मांग करता है

साथ में। "

अब मेरे पास कई प्रश्न हैं 1. मैं पूरे शब्द की खोज कैसे कर सकता हूं, अभी इस कोड में ## पोर्ट्यूनिटी के साथ अवसर कोड बदलता है क्योंकि इस शब्द में ओप है। कॉन्स्टेंट के साथ ही यह ## nstant के साथ बदलता है। अगर पूरा शब्द मेल खाता है तो मुझे प्रतिस्थापित करने की आवश्यकता है।

  1. मैं शब्द में पूरी लाइन से कैसे मिलान कर सकता हूं या पूरा पता हो सकता हूं, यदि संभव नहीं है, तो पता पूरी तरह से बदला जाना चाहिए, इसे 70-80% प्रतिस्थापित करना चाहिए।

वर्तमान में मेरा कोड शब्द फ़ाइल में शब्द को बदलने के लिए उतना ही है।

MemoryStream m = new System.IO.MemoryStream();
//strResumeName contain my word file url
m = objBlob.GetResumeFile(strResumeName);

   using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(m, true))
  {
            body = wordDoc.MainDocumentPart.Document.Body;
            colT = body.Descendants();
            foreach (DocumentFormat.OpenXml.Wordprocessing.Text c in colT)
              {
                 if (c.InnerText.Trim() != String.Empty)
                     {
                       sb.Append(c.InnerText.Trim() + " ");
                     }
              }
               string[] strParts = sb.ToString().Split(' ');
               HyperLinkList = HyperLinksList(wordDoc);
               redactionTags = GetReductionstrings(strParts);
}
 using (Novacode.DocX document = Novacode.DocX.Load(m))
 {
//objCandidateLogin.Address contain my address
  if (!String.IsNullOrEmpty(objCandidateLogin.Address))
  {
     string[] strParts = objCandidateLogin.Address.Replace(",", " ").Split(' ');
     for (int I = 0; I <= strParts.Length - 1; I++)
       {
            if (strParts[I].Trim().Length > 1)
             {
                document.ReplaceText(strParts[I].Trim(), "#############", false, RegexOptions.IgnoreCase);
              }
          }

   }
}
0

3 उत्तर

आप जो चाहते हैं उसे पूरा करने के लिए आप ओपन एक्सएमएल के लिए PowerTools में TextReplacer विधि का उपयोग कर सकते हैं। फिर आप ऐसा कुछ कर सकते हैं:

using DocumentFormat.OpenXml.Packaging;
using OpenXmlPowerTools;
using System.IO;

namespace SearchAndReplace
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            using (WordprocessingDocument doc = WordprocessingDocument.Open("Test01.docx", true))
                TextReplacer.SearchAndReplace(wordDoc:doc, search:"the", replace:"this", matchCase:false);
        }
    }
}

OpenXml पावर टूल्स के लिए Nuget पैकेज को स्थापित करने के लिए, पैकेज प्रबंधक कंसोल में निम्न आदेश चलाएं

PM > Install-Package OpenXmlPowerTools

0
जोड़ा

आप नोवाकोड के साथ ओपनएक्सएमएल का उपयोग कर रहे हैं, आपको केवल ओपनएक्सएमएल का उपयोग करने पर विचार करना चाहिए।

"#" के साथ प्रतिस्थापित पाठ के बारे में। आपको शब्द दस्तावेज़ में सभी अनुच्छेदों के माध्यम से पुन: प्रयास करना होगा और यह देखने के लिए कि आप जिस पाठ को खोज रहे हैं, उसके भीतर टेक्स्ट तत्वों को जांचें और यदि यह मौजूद है तो आप टेक्स्ट को प्रतिस्थापित कर सकते हैं।

इसके लिए कुछ और नहीं। उम्मीद है की यह मदद करेगा।

IEnumerable paragraphs = document.Body.Descendants();
foreach(Paragraph para in paragraphs)
{
    String text = para.Descendents().FirstOrDefault();
    //Code to replace text with "#"
}

मैंने इस कोड को स्मृति से बाहर लिखा है, लेकिन यदि आप इन पंक्तियों पर आगे बढ़ते हैं, तो आपको अपना समाधान मिल जाएगा।

0
जोड़ा
आपके जवाब के लिए धन्यवाद। क्या आप कृपया मुझे एक उदाहरण दे सकते हैं कि शब्द दस्तावेज़ में सभी अनुच्छेदों के माध्यम से पाठ कैसे प्राप्त करें?
जोड़ा लेखक user3110006, स्रोत
आपके सहायक उत्तर के लिए वरुण बहुत बहुत धन्यवाद।
जोड़ा लेखक user3110006, स्रोत

There is an OpenXML Power Tools class for searc and replace text in OpenXML Document. Get it from here. http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/08/04/introducing-textreplacer-a-new-class-for-powertools-for-open-xml.aspx

उम्मीद है की यह मदद करेगा।

0
जोड़ा