2016-06-12 4 views
0

Я ищу, как заполнить файл .doc с данными из моего приложения C#, которое хранит данные в SQL CE db.Скопируйте слово doc и заполните копию выходным текстом

Все approuches я узнал, «до сих пор, должны использовать исходный файл .doc для поиска и замены переменных со значениями и сохранить его в оригинале, что кажется большим, но мне нужно:

1 ° Скопируйте исходный файл .doc в место, где пользователь хочет, используя savefiledialog.

2 ° Затем копия выполняется с данными, которые я хочу, а затем сохранен.

Поскольку файл .doc будет моделью для большого количества профилей позже, поэтому я не могу редактировать оригинал, и пользователь должен выбрать, где он хочет его сохранить.

Или Может быть:

1 ° Изменить модель .doc, то SaveFileDialog (без изменения модели .doc)

EDIT: Может ли решить эту проблему, для тех, кто заинтересован в будущем:

private void CreateWordDocument(object fileName, 
      object saveAs) 
     { 
      //Set Missing Value parameter - used to represent 
      // a missing value when calling methods through 
      // interop. 
      object missing = System.Reflection.Missing.Value; 

      //Setup the Word.Application class. 
      Word.Application wordApp = 
       new Word.Application(); 

      //Setup our Word.Document class we'll use. 
      Word.Document aDoc = null; 

      // Check to see that file exists 
      if (File.Exists((string)fileName)) 
      { 
       DateTime today = DateTime.Now; 

       object readOnly = false; 
       object isVisible = false; 

       //Set Word to be not visible. 
       wordApp.Visible = false; 

       //Open the word document 
       aDoc = wordApp.Documents.Open(ref fileName, ref missing, 
        ref readOnly, ref missing, ref missing, ref missing, 
        ref missing, ref missing, ref missing, ref missing, 
        ref missing, ref isVisible, ref missing, ref missing, 
        ref missing, ref missing); 

       // Activate the document 
       aDoc.Activate(); 

       // Find Place Holders and Replace them with Values. 
       this.FindAndReplace(wordApp, "$$name$$", "Zach Smith"); 


      } 
      else 
      { 
       MessageBox.Show("Arquivo faltando."); 
       return; 
      } 


      SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
      saveFileDialog1.Filter = "Documento do Word|*.doc"; 
      saveFileDialog1.Title = "Salvar"; 
      saveFileDialog1.FileName = "Ficha Reg"; 
      if (DialogResult.OK == saveFileDialog1.ShowDialog()) 
      { 
       string docName = saveFileDialog1.FileName; 
       if (docName.Length > 0) 
       { 


        saveAs = (object)docName; 
        //Save the document as the correct file name. 
        aDoc.SaveAs(ref saveAs, 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); 





       } 
      } 


      //Close the document - you have to do this. 
      aDoc.Close(ref missing, ref missing, ref missing); 

      MessageBox.Show("File created."); 
     } 

     /// <summary> 
     /// This is simply a helper method to find/replace 
     /// text. 
     /// </summary> 
     /// <param name="WordApp">Word Application to use</param> 
     /// <param name="findText">Text to find</param> 
     /// <param name="replaceWithText">Replacement text</param> 
     private void FindAndReplace(Word.Application WordApp, 
            object findText, 
            object replaceWithText) 
     { 
      object matchCase = true; 
      object matchWholeWord = true; 
      object matchWildCards = false; 
      object matchSoundsLike = false; 
      object nmatchAllWordForms = false; 
      object forward = true; 
      object format = false; 
      object matchKashida = false; 
      object matchDiacritics = false; 
      object matchAlefHamza = false; 
      object matchControl = false; 
      object read_only = false; 
      object visible = true; 
      object replace = 2; 
      object wrap = 1; 

      WordApp.Selection.Find.Execute(ref findText, 
       ref matchCase, ref matchWholeWord, 
       ref matchWildCards, ref matchSoundsLike, 
       ref nmatchAllWordForms, ref forward, 
       ref wrap, ref format, ref replaceWithText, 
       ref replace, ref matchKashida, 
       ref matchDiacritics, ref matchAlefHamza, 
       ref matchControl); 
     } 


     private void button1_Click(object sender, EventArgs e) 
     { 


      CreateWordDocument(@"C:\Users\Blind\Desktop\FICHA.doc", ""); 
     } 

ответ

0

Правильный способ приблизиться к этому - сохранить файл * .doc как шаблон (* .dot), затем usae Documents.Add метод для создания копии из шаблона.

 Смежные вопросы

  • Нет связанных вопросов^_^