Introduction
Well most of u guys already know the basic stuff, so i go from the 'Start Word Application Class'. This code will start Word 2003, create a mailmerge document and will merge the data recieved from a DSN source to this document
The start
Create a Word template (.dot) file with mergefields like i did. Or use a .doc file, whatever you want. My mergefields are called 'bedrijfsnaam','adres' and so on. Its dutch so forget about the names :)
Now create the reference to Office Word 2003 v11.0 object. Now I have the code below to make things easyer.
using Word = Microsoft.Office.Interop.Word;
Now create a User-DSN with the name 'dsn_data'. Thats what i dit so you'll be able to find the name back in the code. This connection can be to any datasource you want.
The real thing
Now lets create the code for our application Create the definitions:
Word.Application wrdApp;
Word.Document oDataDoc;
Word.MailMerge wrdMailMerge;
Object oMissing = System.Type.Missing;
Object oFalse = false;
Object oTrue = true;
Object oName = Environment.CurrentDirectory + @"\template.dot";
Object oFileName = Environment.CurrentDirectory + @"\saved.rtf";
Object oFileFormat = Word.WdSaveFormat.wdFormatRTF;
// Starting the Word Application
wrdApp = new Word.ApplicationClass();
wrdApp.Visible = true;
wrdApp.WindowState = Word.WdWindowState.wdWindowStateMaximize;
// Open the template
oDataDoc = wrdApp.Documents.Add(ref oName, ref oFalse, ref oMissing, ref oMissing);
oDataDoc.Activate();
// Document 2 mailmerge format
wrdMailMerge = oDataDoc.MailMerge;
wrdMailMerge.HighlightMergeFields = false;
wrdMailMerge.ViewMailMergeFieldCodes = 0; //this is for showing the data instead of fieldnames
The data part
// The data part
Object oConnection = "DSN=dsn_data"; //The DSN connection name
Object oQuery = "SELECT * FROM some_table"; // The query to get data from the DSN
Object oSubType = Word.WdMergeSubType.wdMergeSubTypeWord;
//Open the data source and merge the fields
wrdMailMerge.OpenDataSource("", ref oFileFormat, ref oMissing, ref oMissing, ref oTrue, ref oMissing,ref oMissing, ref oMissing, ref oFalse, ref oMissing, ref oMissing, ref oConnection, ref oQuery, ref oMissing, ref oMissing, ref oSubType);
wrdMailMerge.SuppressBlankLines = true;
// Save document
oDataDoc.SaveAs(ref oFileName, ref oFileFormat, ref oMissing, ref oMissing, ref oTrue, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
oDataDoc.Saved = true;
// Unload objects from the memory
wrdMailMerge = null;
oDataDoc = null;
wrdApp = null;