Hi. I am making a program that needs to create multiple doc files, the template contains 2 pages, first page is covering letter and second page has a table.
The first page requires to have 2 inches margin top.
The number of files to be generated is based on the number of rows in the first table of the dataset to be merged to the document.
dsMerge = new DataSet()
Table 1: BankMain - first table
Table 2 BankDetails
How can I produce multiple files?
I have this code
private void CreateWordDocument()
{
DataTable dtDetails = new DataTable();
foreach (GridViewRow gvRow in gvBankExport.Rows)
{
DataTable dt = new DataTable();
dt = dtBankMainCreate();
Label lblBankCode = (Label)gvRow.FindControl("lblBankCode");
Label lblBankTotal = (Label)gvRow.FindControl("lblBankTotal");
TextBox txtBankName = (TextBox)gvRow.FindControl("txtBankName");
TextBox txtAddress = (TextBox)gvRow.FindControl("txtAddress");
TextBox txtAcctNo = (TextBox)gvRow.FindControl("txtAcctNo");
TextBox txtCurrencyCode = (TextBox)gvRow.FindControl("txtCurrencyCode");
TextBox txtOfficerTitle = (TextBox)gvRow.FindControl("txtOfficerTitle");
TextBox txtFirstName = (TextBox)gvRow.FindControl("txtFirstName");
TextBox txtLastName = (TextBox)gvRow.FindControl("txtLastName");
TextBox txtPosition = (TextBox)gvRow.FindControl("txtPosition");
string signatory1 = drpSignatory1.SelectedItem.Text.Split('|')[0].ToString();
string signatory1Pos = drpSignatory1.SelectedItem.Text.Split('|')[1].ToString();
string signatory2 = drpSignatory2.SelectedItem.Text.Split('|')[0].ToString();
string signatory2Pos = drpSignatory2.SelectedItem.Text.Split('|')[1].ToString();
string bankcode = lblBankCode.Text;
string bankname = txtBankName.Text;
string address = txtAddress.Text;
string acctno = txtAcctNo.Text;
string curr = txtCurrencyCode.Text;
string offtitle = txtOfficerTitle.Text;
string lastname = txtLastName.Text;
string firstname = txtFirstName.Text;
string offposition = txtPosition.Text;
string banktotal = lblBankTotal.Text;
string a = Convert.ToDecimal(Math.Truncate(Convert.ToDouble(banktotal))).ToString();
string decimalPart = (Convert.ToDecimal(banktotal) - Math.Floor(Convert.ToDecimal(banktotal))).ToString().Replace("0.", "");
string numberWordValue = NumberToWords(Convert.ToInt32(a)).Replace("-", " ");
DataRow dRow = dt.NewRow();
dRow["BankInstructionDate"] = DateTime.Now.ToString("MMMM dd, yyyy");
dRow["BANKFULLNAME"] = bankname;
dRow["BANKFULLADDRESS"] = address;
dRow["BankFullContactPerson"] = firstname + " " + lastname;
dRow["BankFullContactPerPosition"] = offposition;
dRow["BankOfficerTitle"] = offtitle;
dRow["BankLastNameContactPerson"] = lastname;
dRow["BANKFULLACCOUNTNO"] = acctno;
dRow["TOTALAMOUNTINWORDS"] = numberWordValue;
dRow["NUMBERCENTS"] = decimalPart;
dRow["CURRENCYCODE"] = curr;
dRow["TOTALAMOUNTINDIGITS"] = banktotal;
dRow["Signatory1"] = signatory1;
dRow["Sign1Position"] = signatory1Pos;
dRow["Signatory2"] = signatory2;
dRow["Sign3Positionsss"] = signatory2Pos;
dRow["BankCode"] = bankcode;
dRow["PayrollPeriod"] = drpPayrollPeriod.SelectedItem.Text.ToString();
dt.Rows.Add(dRow);
dtDetails = dtBankDetails(bankcode);
dt.TableName = "BankMain";
dtDetails.TableName = "BankDetails";
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables.Add(dtDetails);
ds.Relations.Add(new DataRelation("BankRel", dt.Columns["BankCode"], dtDetails.Columns["BankCode"]));
DocMailMerge(ds, bankcode);
}
}
protected void DocMailMerge(DataSet dsMerge, string bcode)
{
string sourceFile = Server.MapPath("~/Word Files/BankInstruction_CoveringLetter.docx");
Document docBank = new Document(sourceFile);
Document docClose = (Document)docBank.Clone(true);
docBank.MailMerge.TrimWhitespaces = false;
docBank.MailMerge.ExecuteWithRegions(dsMerge);
docBank.Save(Response, "BankInstruction_" + bcode.Trim() + ".docx", ContentDisposition.Inline, null);
}