2016-05-14 2 views
0

DocXライブラリを使用してdocファイルを生成する汎用関数を作成しましたが、ドキュメントテンプレートのすべての項目では機能しません。NovaCode DocXは、ワードテンプレートの正しい項目を置き換えることができません。

これは、最初の項目だけを置き換え、他の項目では同じtxtにします。マイドキュメントのパラメータは、次のように設定されている: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; 
    } 
} 

答えて

0

私は私のエントリのconcepteを変更している、私は、キーと値

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; 
     } 

     } 
使用辞書です
関連する問題