Create a Word document by passing a dataset (C#, Office 2003 any datasource).
Creating a Word document with merge fields, dataset and some images to go with can be a tedious task. This code does the job for you. Just add this to a project and use. More details are given below.
Using the Code
This code was developed for a specific use in our organization and it depends entirely on developers how they want to develop it further and use it in their project. The attached code is a .cs file where the main document generation is placed.
Add this file to a project.
Make sure you have installed and added reference to Office Runtime (VSTO) and Microsoft Word library.
Create a Word template with few merge fields. (Make sure the merge field names are the same as the names of the dataset field name you provide to the code).
If you want an image to be embedded in the document, that should also be part of the dataset (of course as Byte array).
Now for the image merge fields in Word template should be inserted something like this. E.g.
<<UserSignature(image(270,70))>> (Play around with this and you will get the desired width and height).
Here UserSignature is the dataset field name, image is needed as in the example above, 270 and 70 are width and height respectively.
Calling the Code
ABCCustomDocuments myDoc = new ABCCustomDocuments();
bool bDocGen = myDoc.CreateWordDocument(sTemplate, savedDocsPath + sFilename, ds);
sTemplate is the template file with complete folder path.
savedDocsPath is the Path for the folder where you want to store the document.
sFilename is the name of the file you want to be saved as.
ds is a single row
dataset with required column values including the image.
if (bDocGen == true)
Response.ContentType = "application/msword";
Response.AddHeader("Content-Disposition", "attachment;filename=" + sFilename);
Response.TransmitFile(savedDocsPath + sFilename);
Guidelines are provided for you. Feel free to use this code and develop further and share with the community.
Points of Interest
Hope this is of some help to someone out there?
- 30th August, 2007: Initial post