2013-10-29 11 views
10

मैं सूची से Microsoft.Office.Interop.Word के साथ .docx दस्तावेज़ कैसे बना सकता हूं? या docx.dll जोड़ने का सबसे अच्छा तरीका है?मैं Microsoft.Office.Interop.Word के साथ .docx दस्तावेज़ कैसे बना सकता हूं?

http://www.c-sharpcorner.com/UploadFile/scottlysle/using-the-docx-dll-to-programmatically-create-word-documents/

अद्यतन। मेरा पहला सवाल एक लिटल गलत हो सकता है। Microsoft.Office.Interop.Word और DocX.dll के बीच क्या अंतर है? क्या मुझे दोनों मामलों में .docx दस्तावेज़ बनाने और खोलने के लिए माइक्रोस्कोफ्ट वर्ड की आवश्यकता है?

+0

इंटरऑप.ऑर्ड को मशीन पर कार्यालय स्थापित करने की आवश्यकता है। डॉक्सएक्स नहीं करता है, यह सीधे .docx फ़ाइल की OpenXML सामग्री को हैक करता है। सामान्य पसंद ओपन एक्सएमएल एसडीके है। इस पुस्तकालय के लिए दीर्घकालिक समर्थन आमतौर पर कुछ परेशान होगा। ज्ञात समस्याओं के लिए समस्या सूची की समीक्षा करें। –

उत्तर

18

OpenXML SDK स्थापित करने के बाद आप संदर्भ के लिए सक्षम होगा DocumentFormat.OpenXml विधानसभा: Add Reference ->Assemblies -> Extensions ->DocumentFormat.OpenXml। इसके अलावा आपको WindowsBase संदर्भित करने की आवश्यकता होगी।

से आप दस्तावेज़ इस तरह, उदाहरण के लिए, उत्पन्न करने में सक्षम हो जाएगा:

using DocumentFormat.OpenXml; 
using DocumentFormat.OpenXml.Packaging; 
using DocumentFormat.OpenXml.Wordprocessing; 

namespace MyNamespace 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (var document = WordprocessingDocument.Create(
       "test.docx", WordprocessingDocumentType.Document)) 
      { 
       document.AddMainDocumentPart(); 
       document.MainDocumentPart.Document = new Document(
        new Body(new Paragraph(new Run(new Text("some text"))))); 
      } 
     } 
    } 
} 

इसके अलावा, आप उत्पादकता उपकरण (एक ही लिंक) का उपयोग दस्तावेज़ से कोड उत्पन्न करने के लिए कर सकते हैं। यह समझने में मदद कर सकता है कि एसडीके एपीआई के साथ कैसे काम करें।

आप इंटरॉप साथ भी ऐसा ही कर सकते हैं:

using System.Reflection; 
using Microsoft.Office.Interop.Word; 
using System.Runtime.InteropServices; 

namespace Interop1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Application application = null; 
      try 
      { 
       application = new Application(); 
       var document = application.Documents.Add(); 
       var paragraph = document.Paragraphs.Add(); 
       paragraph.Range.Text = "some text"; 

       string filename = GetFullName(); 
       application.ActiveDocument.SaveAs(filename, WdSaveFormat.wdFormatDocument); 
       document.Close(); 

      } 
      finally 
      { 
       if (application != null) 
       { 
        application.Quit(); 
        Marshal.FinalReleaseComObject(application); 
       } 
      } 
     } 
    } 
} 

लेकिन इस मामले में आप का उल्लेख होना चाहिए COM प्रकार लायब्रेरी माइक्रोसॉफ्ट। वर्ड ऑब्जेक्ट लाइब्रेरी How do I properly clean up Excel interop objects?

+2

यदि आप इंटरऑप तरीके से जाना चाहते हैं, तो आपको एप्लिकेशन ऑब्जेक्ट को भी छोड़ना चाहिए और कॉम ऑब्जेक्ट को छोड़ना चाहिए। अन्यथा आप विशाल स्मृति रिसाव के साथ खत्म हो जाएगा। यही कारण है कि http://alemiralles.blogspot.com.ar/2012/11/how-to-create-word-documents-from.html –

+0

वह लिंक खराब है। – KFP

0

आप Microsoft इंटरॉप कार्यालय का उपयोग नहीं करना चाहते हैं तो

मैं वास्तव में इस

//Add reference DocX.dll 

using Novacode; 

    // reference to the working document. 
     static DocX gDocument; 

public void CreateWithOpenDoc(string _fileName, string _saveAs, int _LeadNo) 
     { 
      if (File.Exists(_fileName)) 
      { 

       gDocument = DocX.Load(_fileName); 



       //--------------------- Make changes ------------------------------- 

       // Strong-Type 
       Dictionary<string, string> changesList = GetChangesList(_LeadNo, dt.Rows[0]); 

       foreach (KeyValuePair<string, string> keyValue in changesList) 
       { 
        gDocument.ReplaceText(keyValue.Key.ToString().Trim(), keyValue.Value.ToString().Trim(), false); 
       } 

       //------------------------- End of make changes --------------------- 


       gDocument.SaveAs(_saveAs); 

      } 

     } 

ले संदर्भ इसे पसंद किया:


यहाँ COM इंटरॉप बारे में बहुत उपयोगी बातें हैं C-sharp corner

0

यदि आप नहीं जानते कि कार्यालय 2016 इंटरऑप ऑब्जेक्ट्स का उपयोग कैसे करें, तो लिंक (https://social.msdn.microsoft.com/Forums/vstudio/en-US/55fe7d16-998b-4c43-9746-45ff35310158/office-2016-interop-assemblies?forum=exceldev) आपकी मदद कर सकता है।

इसके बाद, आप @Evgeny Timoshenko के उदाहरण को आजमा सकते हैं।

class Program 
{ 
    static void Main(string[] args) 
    { 
     Application application = null; 
     try 
     { 
      application = new Application(); 
      var document = application.Documents.Add(); 
      var paragraph = document.Paragraphs.Add(); 
      paragraph.Range.Text = "some text"; 

      string filename = GetFullName(); 
      application.ActiveDocument.SaveAs(filename, WdSaveFormat.wdFormatDocument); 
      document.Close(); 

     } 
     finally 
     { 
      if (application != null) 
      { 
       application.Quit(); 
       Marshal.FinalReleaseComObject(application); 
      } 
     } 
    } 
} 
संबंधित मुद्दे