2012-12-20 16 views
9

पर टेक्स्ट कॉपी करें मैं शब्द फ़ाइल से पाठ पढ़ रहा हूं और कुछ पाठ को पाठित पाठ से प्रतिस्थापित कर रहा हूं।शब्द फ़ाइल से नए शब्द

var wordApp = new Microsoft.Office.Interop.Word.Application(); 
object file = path; 

object nullobj = System.Reflection.Missing.Value; 

var doc = wordApp.Documents.Open(ref file, ref nullobj, ref nullobj, 
               ref nullobj, ref nullobj, ref nullobj, 
               ref nullobj, ref nullobj, ref nullobj, 
               ref nullobj, ref nullobj, ref nullobj); 
doc.ActiveWindow.Selection.WholeStory(); 

doc.ActiveWindow.Selection.Copy(); 

IDataObject data = Clipboard.GetDataObject(); 
var text =data.GetData(DataFormats.Text); 

तो मैं मूल शब्द फ़ाइल से पाठ है, और अब मैं इसकी आवश्यकता है एक नया शब्द फ़ाइल जो मौजूद नहीं (नया पाठ) को पारित करने के लिए।

मैंने कोशिश की

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "WINWORD.EXE"; 
Process.Start(startInfo); 

यह जो फ़ाइल सिस्टम जो ठीक है में शारीरिक रूप से सहेजा नहीं नए शब्द फ़ाइल को खोलता है। लेकिन मुझे यकीन नहीं है कि इस नई फ़ाइल में टेक्स्ट वैल्यू कैसे पास कर सकता है।

अद्यतन

कोड ऊपर चलाने के बाद मैंने कोशिश की

var wordApp = new Microsoft.Office.Interop.Word.Application();    
var doc = wordApp.ActiveDocument; 

कौन सा के साथ आता है "यह आदेश क्योंकि कोई दस्तावेज़ खुला हुआ है उपलब्ध नहीं है।"

+0

आप इस देखा है। कॉम/प्रश्न/5160 9 64/कॉपी-सामग्री-शब्द-डॉक्टर-और-पेस्ट-इन-ए-सी-तेज – MUG4N

+0

@ एमयूजी 4 एन: मैंने कुछ ऐसा देखा [यहां] (http://pastebin.com/1sV8es7b), लेकिन मुझे यकीन नहीं है कि 'worddocpromo' क्या है। कोई स्पष्टीकरण –

+0

@huMptyduMpty आपको प्रक्रिया की बजाय इस चीज़ को करने के लिए शब्द इंटरऑप पर निर्भर होना चाहिए। प्रारंभ करें। एक नया शब्द दस्तावेज़ बनाएं, सामग्री सेट करें, इसे किसी अन्य स्थान पर सहेजें, अब इसे process.start या तो का उपयोग करके वहां से खोलें। कॉम ऑब्जेक्ट्स को ठीक तरह से निपटाना न भूलें – nawfal

उत्तर

4

यहां एक साधारण नमूना है जो पूरे पाठ की प्रतिलिपि बनाता है और एक वर्ड दस्तावेज़ से एक नए दस्तावेज़ में स्वरूपण करता है। नया दस्तावेज़ में, पाठ तो शब्दों का उपयोग कर & सुविधा की जगह का पता लगाएं, बदल जाएगी:

using System; 
using System.Linq; 
using Word = Microsoft.Office.Interop.Word; 

namespace WordCopy 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var fileName = args[0]; 

      var wordApp = new Word.Application(); 
      wordApp.Visible = true; 
      var document = wordApp.Documents.Open(fileName); 

      var newDocument = CopyToNewDocument(document); 

      SearchAndReplaceEverywhere(newDocument, "this", "that"); 
     } 

     static Word.Document CopyToNewDocument(Word.Document document) 
     { 
      document.StoryRanges[Word.WdStoryType.wdMainTextStory].Copy(); 

      var newDocument = document.Application.Documents.Add(); 
      newDocument.StoryRanges[Word.WdStoryType.wdMainTextStory].Paste(); 
      return newDocument; 
     } 

     static void SearchAndReplaceEverywhere(
      Word.Document document, string find, string replace) 
     { 
      foreach (Word.Range storyRange in document.StoryRanges) 
      { 
       var range = storyRange; 
       while (range != null) 
       { 
        SearchAndReplaceInStoryRange(range, find, replace); 

        if (range.ShapeRange.Count > 0) 
        { 
         foreach (Word.Shape shape in range.ShapeRange) 
         { 
          if (shape.TextFrame.HasText != 0) 
          { 
           SearchAndReplaceInStoryRange(
            shape.TextFrame.TextRange, find, replace); 
          } 
         }       
        } 
        range = range.NextStoryRange; 
       } 
      } 
     } 

     static void SearchAndReplaceInStoryRange(
      Word.Range range, string find, string replace) 
     { 
      range.Find.ClearFormatting(); 
      range.Find.Replacement.ClearFormatting(); 
      range.Find.Text = find; 
      range.Find.Replacement.Text = replace; 
      range.Find.Wrap = Word.WdFindWrap.wdFindContinue; 
      range.Find.Execute(Replace: Word.WdReplace.wdReplaceAll); 
     } 
    } 
} 
4

तुम सब करने की ज़रूरत है यह है: http: // stackoverflow

using System.Runtime.InteropServices; 
using MSWord = Microsoft.Office.Interop.Word; 

namespace ConsoleApplication6 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var application = new MSWord.Application(); 
      var originalDocument = application.Documents.Open(@"C:\whatever.docx"); 

      originalDocument.ActiveWindow.Selection.WholeStory(); 
      var originalText = originalDocument.ActiveWindow.Selection; 

      var newDocument = new MSWord.Document(); 
      newDocument.Range().Text = originalText.Text; 
      newDocument.SaveAs(@"C:\whateverelse.docx"); 

      originalDocument.Close(false); 
      newDocument.Close(); 

      application.Quit(); 

      Marshal.ReleaseComObject(application); 
     } 
    } 
} 
संबंधित मुद्दे