diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page.sln b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page.sln new file mode 100644 index 000000000..4a8a64175 --- /dev/null +++ b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31911.196 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mail-merge-in-multi-column-page", "Mail-merge-in-multi-column-page\Mail-merge-in-multi-column-page.csproj", "{D3AF529E-DB54-4294-A876-DD42E1E472D0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58137FF9-5AE1-4514-9929-3A8A7DA1DFEB} + EndGlobalSection +EndGlobal diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Andrew.png b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Andrew.png new file mode 100644 index 000000000..c038c884a Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Andrew.png differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Janet.png b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Janet.png new file mode 100644 index 000000000..c86c4e53d Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Janet.png differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Margaret.png b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Margaret.png new file mode 100644 index 000000000..861f5907a Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Margaret.png differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Nancy.png b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Nancy.png new file mode 100644 index 000000000..677201146 Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Nancy.png differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Steven.png b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Steven.png new file mode 100644 index 000000000..dba7673f8 Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Steven.png differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Template.docx b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Template.docx new file mode 100644 index 000000000..236ed43ed Binary files /dev/null and b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Data/Template.docx differ diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Mail-merge-in-multi-column-page.csproj b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Mail-merge-in-multi-column-page.csproj new file mode 100644 index 000000000..43ebc7400 --- /dev/null +++ b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Mail-merge-in-multi-column-page.csproj @@ -0,0 +1,37 @@ + + + + Exe + net8.0 + Mail_merge_in_multi_column_page + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Output/.gitkeep b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Output/.gitkeep new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Output/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Program.cs b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Program.cs new file mode 100644 index 000000000..3b5504e2b --- /dev/null +++ b/Mail-Merge/Mail-merge-in-multi-column-page/.NET/Mail-merge-in-multi-column-page/Program.cs @@ -0,0 +1,95 @@ +using Syncfusion.DocIO; +using Syncfusion.DocIO.DLS; +using System.Collections.Generic; +using System.IO; + +namespace Mail_merge_in_multi_column_page +{ + class Program + { + static void Main(string[] args) + { + using (FileStream fileStream = new FileStream(Path.GetFullPath(@"Data/Template.docx"), FileMode.Open, FileAccess.ReadWrite)) + { + //Loads an existing Word document into DocIO instance. + using (WordDocument document = new WordDocument(fileStream, FormatType.Automatic)) + { + //Gets the employee details as IEnumerable collection. + List employeeList = GetEmployees(); + //Creates an instance of MailMergeDataTable by specifying MailMerge group name and IEnumerable collection. + MailMergeDataTable dataSource = new MailMergeDataTable("Employees", employeeList); + //Uses the mail merge events handler for image fields. + document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MergeField_EmployeeImage); + //Performs Mail merge. + document.MailMerge.ExecuteGroup(dataSource); + //Creates file stream. + using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Result.docx"), FileMode.Create, FileAccess.ReadWrite)) + { + //Saves the Word document to file stream. + document.Save(outputStream, FormatType.Docx); + } + } + } + } + + /// + /// Gets the employee details to perform mail merge. + /// + public static List GetEmployees() + { + List employees = new List(); + employees.Add(new Employee("Nancy", "Smith", "Sales Representative", "505 - 20th Ave. E. Apt. 2A,", "Seattle", "WA", "USA", "Nancy.png")); + employees.Add(new Employee("Andrew", "Fuller", "Vice President, Sales", "908 W. Capital Way", "Tacoma", "WA", "USA", "Andrew.png")); + employees.Add(new Employee("Roland", "Mendel", "Sales Representative", "722 Moss Bay Blvd.", "Kirkland", "WA", "USA", "Janet.png")); + employees.Add(new Employee("Margaret", "Peacock", "Sales Representative", "4110 Old Redmond Rd.", "Redmond", "WA", "USA", "Margaret.png")); + employees.Add(new Employee("Steven", "Buchanan", "Sales Manager", "14 Garrett Hill", "London", string.Empty, "UK", "Steven.png")); + return employees; + } + + /// + /// Represents the method that handles MergeImageField event. + /// + private static void MergeField_EmployeeImage(object sender, MergeImageFieldEventArgs args) + { + //Binds image from file system during mail merge. + if (args.FieldName == "Photo") + { + string photoFileName = args.FieldValue.ToString(); + //Gets the image from file system. + FileStream imageStream = new FileStream(Path.GetFullPath(@"Data/" + photoFileName), FileMode.Open, FileAccess.Read); + args.ImageStream = imageStream; + //Gets the picture, to be merged for image merge field + WPicture picture = args.Picture; + //Resizes the picture + picture.Height = 90; + picture.Width = 90; + } + } + } + + /// + /// Represents a class to maintain employee details. + /// + public class Employee + { + public string FirstName { get; set; } + public string LastName { get; set; } + public string Address { get; set; } + public string City { get; set; } + public string Region { get; set; } + public string Country { get; set; } + public string Title { get; set; } + public string Photo { get; set; } + public Employee(string firstName, string lastName, string title, string address, string city, string region, string country, string photoFilePath) + { + FirstName = firstName; + LastName = lastName; + Title = title; + Address = address; + City = city; + Region = region; + Country = country; + Photo = photoFilePath; + } + } +}