I currently have a window-form that when a button is pressed, will merge 3 separate word docx's into one combined file.
private void button1_Click(object sender, EventArgs e)
{
string document1 = @"C:\Test\Test1.docx";
string document2 = @"C:\Test\Test2.docx";
string document3 = @"C:\Test\Test3.docx";
string[] documentsToMerge = { document1, document2, document3 };
string outputFileName = String.Format(@"C:\Test\Merge\Combined.docx", Guid.NewGuid());
MsWord.Merge(documentsToMerge, outputFileName, true);}
however, I want to select the containing folder ("C:\Test") as opposed to each individual file. This will allow me to combine alot more files without having to code them into the program individually, which would make it much more practical when using.
Is there any suggestions how to achieve this?
public static void Merge(string[] filesToMerge, string outputFilename, bool insertPageBreaks, string documentTemplate)
{
object defaultTemplate = documentTemplate;
object missing = System.Type.Missing;
object pageBreak = Word.WdBreakType.wdSectionBreakNextPage;
object outputFile = outputFilename;
// Create a new Word application
Word._Application wordApplication = new Word.Application();
try
{
// Create a new file based on our template
Word.Document wordDocument = wordApplication.Documents.Add(
ref missing
, ref missing
, ref missing
, ref missing);
// Make a Word selection object.
Word.Selection selection = wordApplication.Selection;
//Count the number of documents to insert;
int documentCount = filesToMerge.Length;
//A counter that signals that we shoudn't insert a page break at the end of document.
int breakStop = 0;
// Loop thru each of the Word documents
foreach (string file in filesToMerge)
{
breakStop++;
// Insert the files to our template
selection.InsertFile(
file
, ref missing
, ref missing
, ref missing
, ref missing);
//Do we want page breaks added after each documents?
if (insertPageBreaks && breakStop != documentCount)
{
selection.InsertBreak(ref pageBreak);
}
}
// Save the document to it's output file.
wordDocument.SaveAs(
ref outputFile
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing
, ref missing);
// Clean up!
wordDocument = null;
}
catch (Exception ex)
{
//I didn't include a default error handler so i'm just throwing the error
throw ex;
}
finally
{
// Finally, Close our Word application
wordApplication.Quit(ref missing, ref missing, ref missing);
}
}
}
this is the MsWord.merge referenced in the first section of code. i've attempted using ' lnkResult.NavigateUrl = ' however i was unsuccessful.