рдореБрджреНрд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рдИрдЖрд░рдкреА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрднреНрдпрд╛рд╕ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ 30% рд░рд┐рдкреЛрд░реНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред

рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ReportBuilder рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрд╕реЛрд╕.рд╡реЙрд░реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордПрд╕ рд╡рд░реНрдб 2003 (рдФрд░ рдмрд╛рдж рдореЗрдВ) рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрд╛рджрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдХреМрд╢рд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрджрд┐ред

рд╕рдорд╛рди рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдореБрдЦреНрдп рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд░реНрдб 2003 рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ ред
рдлрд┐рд░ рдЖрдк рдЬреИрд╕реЗ рдЪрд╛рд╣реЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЗрд╕реЗ рдЙрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рд╣рдо рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рд╡реНрдпрдХреНрддрд┐ рдореБрджреНрд░рд┐рдд рд░реВрдк рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ SQL рдпрд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдХреЛрдИ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдХреЗрд╡рд▓ рдПрдордПрд╕ рдСрдлрд┐рд╕ рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ , рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐:


рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рддреЛ, рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рдореБрджреНрд░рдг рд░реВрдкреЛрдВ рдХреЗ рдореБрдЦреНрдп рддрддреНрд╡ рд╕рд╛рдзрд╛рд░рдг рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдФрд░ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред

/// <summary>      </summary> /// <param name="additionalFields"> ///  -   ,  -    ///    (  ) /// </param> /// <returns>  </returns> public static MemoryStream CreateNewTemplate(Dictionary<string, string> additionalFields) { var doc = new Document(); var docBuilder = new DocumentBuilder(doc); docBuilder.MoveToDocumentEnd();//    ,       foreach (var field in additionalFields) { docBuilder.Font.Bold = true; docBuilder.InsertHtml(string.Format("{0}: ", field.Value)); docBuilder.Font.Bold = false; //  ,   -  ,  - ,   ,   Word docBuilder.InsertField(string.Format(@"MERGEFIELD {0} \* MERGEFORMAT", field.Key), field.Key); docBuilder.InsertHtml("<br>"); } var stream = new MemoryStream(); doc.Save(stream, SaveFormat.Doc); //      stream.Position = 0; return stream; } /// <summary>     </summary> /// <param name="stream">   </param> /// <param name="tableSysName">  (       )</param> /// <param name="additionalFields">   ( -   ,  -    ) </param> /// <param name="tableRusName">  </param> /// <returns>  </returns> public static MemoryStream AddTable(Stream stream, string tableSysName, Dictionary<string, string> additionalFields, string tableRusName) { var doc = new Document(stream); var docBuilder = new DocumentBuilder(doc); docBuilder.MoveToDocumentEnd(); docBuilder.Font.Bold = true; docBuilder.Font.Size = 14; docBuilder.Writeln(tableRusName); docBuilder.Font.Size = 12; docBuilder.StartTable(); docBuilder.InsertCell(); foreach (var field in additionalFields) { docBuilder.Writeln(field.Value); if (field.Key != additionalFields.Last().Key) { docBuilder.InsertCell(); } } docBuilder.EndRow(); docBuilder.Font.Bold = false; docBuilder.InsertCell(); docBuilder.InsertField(string.Format("MERGEFIELD TableStart:{0}", tableSysName), "{"); foreach (var field in additionalFields) { docBuilder.InsertField(string.Format(@"MERGEFIELD {0} \* MERGEFORMAT", field.Key), field.Key); if (field.Key != additionalFields.Last().Key) { docBuilder.InsertCell(); } } docBuilder.InsertField(string.Format("MERGEFIELD TableEnd:{0}", tableSysName), "}"); docBuilder.Writeln(); docBuilder.EndTable(); docBuilder.Writeln(); stream.Close(); var newStream = new MemoryStream(); doc.Save(newStream, SaveFormat.Doc); newStream.Position = 0; return newStream; } 

рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
 docBuilder.InsertField(string.Format("MERGEFIELD TableStart:{0}", tableSysName), "{"); 

рдпрд╣рд╛рдВ, рдмрд╛рд╣рд░реА рдЪрд┐рд╣реНрди "{" рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдлрд╝реАрд▓реНрдб рдЯреЗрдмрд▓рд╕реНрдЯрд╛рд░реНрдЯ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдкреНрд░рддреАрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдлреЙрд░реНрдо рдкрд░ рдмрд╣реБрдд рдХрдо рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрдд рдореЗрдВ "}" рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдмрд▓рдЗрдВрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдлрд╝реАрд▓реНрдб рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдорд╛рди рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрд▓рдЧреНрди рдХреНрд╖реЗрддреНрд░ рд╡рд░реНрддрдорд╛рди рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рдЪрд╛рд▓ рд╣реИ: рдЖрдк рддреАрди рд╕реНрддрдВрднреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдореЗрдВ рд╢реБрд░реБрдЖрддреА рдЪрд░рд┐рддреНрд░, рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдореЗрдВ рд╕рдорд╛рдкрди рдЪрд░рд┐рддреНрд░, рдФрд░ рдордзреНрдп рдХрдХреНрд╖ рдореЗрдВ рдПрдХ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЖрдкрдХреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд┐рд▓рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рдПрдЧреАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЙрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдЕрдм рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред

рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдлреЛрдВрдЯ, рд▓реЗрдЖрдЙрдЯ, рдЖрджрд┐) - рд╣рдо рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдЙрди рдлрд╝реАрд▓реНрдб рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
 /// <summary>    </summary> /// <param name="stream">   () </param> /// <param name="fieldsToFill">    ( -   ,  -   ) </param> /// <returns>  </returns> public static MemoryStream FillTemplate(Stream stream, Dictionary<string, string> fieldsToFill) { var doc = new Document(stream); var firstArray = fieldsToFill.Select(keys => keys.Key).ToArray(); var secondArray = fieldsToFill.Select(a => (object)a.Value).ToArray(); /*    object.   ,           .        ,   ,  IFieldMergingCallback,     . */ doc.MailMerge.Execute(firstArray, secondArray); var newStream = new MemoryStream(); doc.Save(newStream, SaveFormat.Doc); newStream.Position = 0; stream.Close(); return newStream; } 

рдЕрдм рд╣рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рдЕрд╕реЛрдЬ рдореЗрдВ, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд▓реНрдж рд╣реА рджреЗрдЦреЗрдВрдЧреЗред
 /// <summary> ///   /// </summary> /// <param name="stream"> </param> /// <param name="tableSysName"> </param> /// <param name="tableValues">  </param> /// <returns> </returns> public static MemoryStream FillTable(Stream stream, string tableSysName, List<Dictionary<string, string>> tableValues) { var doc = new Document(stream); // ,  var customersDataSource = new CustomerMailMergeDataSource(tableValues.ToArray(), tableSysName); //    ,  IMailMergeDataSource,     doc.MailMerge.ExecuteWithRegions(customersDataSource); var newStream = new MemoryStream(); doc.Save(newStream, SaveFormat.Doc); newStream.Position = 0; stream.Close(); return newStream; } 

рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
  /// <summary>     </summary> internal class CustomerMailMergeDataSource : IMailMergeDataSource { /// <summary>   </summary> private readonly Dictionary<string, string>[] tableValue; /// <summary>   </summary> private int recordIndex; /// <summary>  </summary> /// <param name="data">  </param> /// <param name="tableName">  </param> public CustomerMailMergeDataSource(Dictionary<string, string>[] data, string tableName) { tableValue = data; recordIndex = -1; TableNamePrivate = tableName; } /// <summary>   </summary> public string TableName { get { return TableNamePrivate; } } /// <summary>    </summary> private static string TableNamePrivate { get; set; } /// <summary>   </summary> private bool IsEof { get { return recordIndex >= tableValue.Count(); } } /// <summary> Aspose.Words   ,      </summary> /// <param name="fieldName">   </param> /// <param name="fieldValue">     </param> /// <returns>       </returns> public bool GetValue(string fieldName, out object fieldValue) { var containsKey = tableValue[recordIndex].ContainsKey(fieldName); fieldValue = containsKey ? tableValue[recordIndex][fieldName] : null; return containsKey; } /// <summary>        </summary> /// <returns>    ,   false </returns> public bool MoveNext() { if (!IsEof) { recordIndex++; } return !IsEof; } /// <summary>    </summary> /// <param name="tableName"> </param> /// <returns>  </returns> public IMailMergeDataSource GetChildDataSource(string tableName) { return null; } } 

рдпрд╣ рд╕рдм рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╣реИред рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд▓реА рдлрд╝реАрд▓реНрдб (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ) рдмрд╕ рдореБрджреНрд░рд┐рдд рд░реВрдк рдореЗрдВ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рднрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, IFieldMergingCallback рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдПрдХ doc.MailMerge.FieldMergingCallback рд╣реИрдВрдбрд▓рд░ рдЙрджрд╛рд╣рд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреЗрдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рд╕реЗрдЯред рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ doc.MailMerge.ExecuteWithRegions () рдореЗрдВ рдмрджрд▓рдХрд░ , рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрднрд╡ рдкреНрд░рд╢реНрди

  1. рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╣реИ? рдирд╣реАрдВ, рдпрд╣ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ
  2. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпреЛрдВ? рдРрд╕рд╛ рд╣реА рд╣реБрдЖред рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рддрд╣рдд рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдореНрдореАрдж рд╣реИред
  3. рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ? рдирд╣реАрдВ, рдпрд╣ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред
  4. рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХрд╣рд╛рдВ рд╣реИрдВ? рдореБрдЭреЗ рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд▓рдЧреАрдВред

рдпрд╣рд╛рдБ рд╕реНрд░реЛрдд рд╣реИрдВ

Source: https://habr.com/ru/post/In135170/


All Articles