2016-05-14 1 views
0

J'ai créé une fonction générique pour générer des fichiers doc en utilisant la bibliothèque DocX mais elle ne fonctionne pas avec tous les éléments de mon modèle de document.NovaCode DocX ne peut pas remplacer les éléments corrects dans mon modèle de mot

Il remplace seulement les premiers éléments et fait le même txt dans les autres. Mes paramètres doc est défini comme ceci: el0,el1,el3 .... el36

public void GenerateFile (string template, List<string> data) 
{ 
    try { 
     //if (File.Exists(template)) 
     //{ 
     DocX dDocument; 

     dDocument = DocX.Load(template); 

     for (int i = 1; i < data.Count(); i++) 
     { 
      var item = data[i]; 

      if (item == null) 
      { 
       item = " "; 
      } 

      var el = "el" + i; 
      dDocument.ReplaceText(el.ToString(), item); 
     } 

     string time = DateTime.Now.Year.ToString() + "" + DateTime.Now.Month.ToString() + "" + DateTime.Now.Day.ToString() + "" + DateTime.Now.Hour.ToString() + "" + DateTime.Now.Minute.ToString() + "" + DateTime.Now.Second.ToString() + "" + DateTime.Now.Millisecond.ToString(); 

     var path = HttpContext.Current.Server.MapPath("~/temp/" + Path.GetFileNameWithoutExtension(template) + "_" + time + ".docx"); 

     dDocument.SaveAs(path); 
     downloadFile(path); 
     //} 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

Répondre

0

J'ai changé le concepte de mes entrées, je suis utilisé Dictionnaire avec clé, valeur

public void GenerateFile(string template, Dictionary<string, string> data) 
    { 
     try { 
      DocX dDocument; 

      dDocument = DocX.Load(template); 


      foreach (var item in data) 
      { 
       dDocument.ReplaceText("[["+item.Key+"]]", item.Value); 

      } 

      var path = HttpContext.Current.Server.MapPath("~/temp/" + Path.GetFileNameWithoutExtension(template) + "_" + DateTime.Now.ToString("yyyyMMddHHmmssFFF") + ".doc"); 
      dDocument.SaveAs(path); 
      downloadFile(path); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

     }