I am trying to retrieve some data from a table in sql database and FindandReplace in a word document. I am getting "string parameter too long" error at the WordApp.Selection.Find.Execute method.Please help!
private void btnML_Click(object sender, EventArgs e) {
richTextBox2.Visible = true;
this.btnML.Visible = true;
String Template;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Title = "Save Management Letter";
saveFileDialog1.Filter = "Microsoft word Format (*.docx)|*.doc";
saveFileDialog1.ShowDialog();
NewFileName = saveFileDialog1.FileName.ToString();
Template = @"C:\Users\czu_ecu\Desktop\OAG-WORK\Management Letter Template_new.docx";
CreateWordDocument(Template,
NewFileName);
}
protected String Findings, Implication, Recommendation, ManagementComment, Person, CDate;
private void CreateWordDocument(object fileName,
object saveAs)
{
String sqlQueryfinding = "Select [Findings_ID] ,[AU_ID] ,[Findings_No] ,[Findings_Title] ,[Findings_Rating] ,[Findings_Description] ,[Findings_Implication] ,[Findings_Recomendation] ,[Findings_ManagementComment] ,[Findings_ManagerResponsible] ,[Findings_CompletionDate] ,[FSC_ID] ,[Findings_Status] from Findings Where AU_ID = 173";;
SqlCommand cmd = new SqlCommand(sqlQueryfinding, Con.main_connect());
//sqlData Reader Object to Read the Value returned from query
SqlDataReader Dr = cmd.ExecuteReader();
//Set Missing Value parameter - used to represent
// a missing value when calling methods through
// interop.
object missing = System.Reflection.Missing.Value;
//Setup the Word.Application class.
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
//Setup our Word.Document class we'll use.
Word.Document aDoc = null;
// Check to see that file exists
DateTime today = DateTime.Now;
object readOnly = false;
object isVisible = false;
//Set Word to be not visible.
wordApp.Visible = false;
//Open the word document
aDoc = wordApp.Documents.Open(ref fileName, ref missing,
false, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref isVisible, ref missing, ref missing,
ref missing, ref missing);
// Activate the document
aDoc.Activate();
while (Dr.Read())
{
// Find Place Holders and Replace them with Values.
this.FindAndReplace(wordApp, "<Finding>", Dr[3].ToString());
this.FindAndReplace(wordApp, "<FindingDescription>", Dr[5].ToString());
this.FindAndReplace(wordApp, "<ImplicationRating>", Dr[4].ToString());
this.FindAndReplace(wordApp, "<Recommendation>", Dr[7].ToString());
this.FindAndReplace(wordApp, "<ManagementComment>", Dr[8].ToString());
this.FindAndReplace(wordApp, "<ResponsiblePerson>", Dr[9].ToString());
this.FindAndReplace(wordApp, "<CompletionDate>", Dr[10].ToString());
}
//Example of writing to the start of a document.
// aDoc.Content.InsertBefore("This is at the beginning\r\n\r\n");
//Example of writing to the end of a document.
// aDoc.Content.InsertAfter("\r\n\r\nThis is at the end");
//Save the document as the correct file name.
try
{
aDoc.SaveAs(ref saveAs,
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);
}
catch (Exception e)
{
// MessageBox.Show(e.ToString());
MessageBox.Show("Management Letter Created", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Close the document - you have to do this.
aDoc.Close(ref missing, ref missing, ref missing);
CloseConnection();
MessageBox.Show("Management Letter Created", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void FindAndReplace(Word.Application WordApp,
object findText,
object replaceWithText)
{
object matchCase = true;
object matchWholeWord = true;
object matchWildCards = false;
object matchSoundsLike = false;
object nmatchAllWordForms = false;
object forward = true;
object format = false;
object matchKashida = false;
object matchDiacritics = false;
object matchAlefHamza = false;
object matchControl = false;
object read_only = false;
object visible = true;
object replace = 2;
object wrap = 1;
WordApp.Selection.Find.Execute(
ref findText,
ref matchCase,
ref matchWholeWord,
ref matchWildCards,
ref matchSoundsLike,
ref nmatchAllWordForms,
ref forward,
ref wrap,
ref format,
ref replaceWithText,
ref replace,
ref matchKashida,
ref matchDiacritics,
ref matchAlefHamza , ref matchControl);
}