region document.xml writing methods
/// <summary>
/// Writes an image within a paragraph
/// into the WordprocessingML.
/// </summary>
/// <param name="writer">The XmlWriter to write the image to.</param>
private void WriteHeaderImage(XmlWriter writer) {
// Load the drawing template into an XML document.
XmlDocument drawingXml = new XmlDocument();
string drawingXmlFile = System.Web.HttpContext.Current.Server.MapPath(drawingTemplate);
drawingXml.Load(drawingXmlFile);
// Load the drawing template into an XML document and pass the reference ID parameter.
drawingXml.LoadXml(string.Format(drawingXml.InnerXml, _imagePartRID));
// Write the wrapping paragraph and the drawing fragment.
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
drawingXml.DocumentElement.WriteContentTo(writer);
writer.WriteEndElement();
writer.WriteEndElement();
}
/// <summary>
/// Writes a document title within a paragraph
/// into the WordprocessingML.
/// </summary>
/// <param name="writer">The XmlWriter to write the image to.</param>
/// <param name="title">Document title</param>
private void WriteDocumentTitle(XmlWriter writer, string title) {
// Create the title.
// <w:p>
// <w:r>
// <w:t>Sales Report - Employee Name</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
WriteTitleParagraphProperties(writer);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
WriteTitleRunProperties(writer);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Sales Report - " + title);
writer.WriteEndElement();
writer.WriteEndElement();
}
/// <summary>
/// Writes a document's contact information within a paragraph
/// into the WordprocessingML.
/// </summary>
/// <param name="writer">The XmlWriter to write the image to.</param>
/// <param name="fullname">Employee's fullname</param>
/// <param name="phone">Employee's phone number</param>
/// <param name="email">Employee's e-mail address</param>
private void WriteDocumentContactInfo(XmlWriter writer, string fullname, string phone, string email) {
// Create the contact information section.
// <w:p>
// <w:r>
// <w:t>Contact</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
WriteSubtitleParagraphProperties(writer);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
WriteSubtitleRunProperties(writer);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Contact");
writer.WriteEndElement();
writer.WriteEndElement();
// Fill in the contact information section.
// <w:p>
// <w:r>
// <w:t>Employee's fullname</w:t>
// <w:br />
// <w:t>sEmployee's e-mail</w:t>
// <w:br />
// <w:t>Employee's phone</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, fullname);
writer.WriteElementString(wordPrefix, "br", wordNamespace, null);
writer.WriteElementString(wordPrefix, "t", wordNamespace, email);
writer.WriteElementString(wordPrefix, "br", wordNamespace, null);
writer.WriteElementString(wordPrefix, "t", wordNamespace, phone);
writer.WriteEndElement();
writer.WriteEndElement();
}
/// <summary>
/// Writes the sales summary information within a paragraph
/// into the WordprocessingML document.
/// </summary>
/// <param name="writer">The XmlWriter to write the page break to.</param>
/// <param name="totalsales">Employee's sales YTD</param>
/// <param name="salesquota">Employee's sales quota</param>
private void WriteSalesSummaryInfo(XmlWriter writer, string totalsales, string salesquota) {
string wordNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
string wordPrefix = "w";
// Create the sales summary section.
// <w:p>
// <w:r>
// <w:t>Sales Summary</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
WriteSubtitleParagraphProperties(writer);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
WriteSubtitleRunProperties(writer);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Sales Summary");
writer.WriteEndElement();
writer.WriteEndElement();
// Fill in the contact information section.
// <w:p>
// <w:r>
// <w:t>Total Sales:</w:t>
// </w:r>
// <w:r>
// <w:t>Employee's sales YTD</w:t>
// </w:r>
// <w:br />
// <w:r>
// <w:t>Employee's sales quota</w:t>
// </w:r>
// <w:r>
// <w:t>$1000.00</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Total Sales:");
writer.WriteElementString(wordPrefix, "tab", wordNamespace, null);
writer.WriteEndElement();
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, totalsales);
writer.WriteEndElement();
writer.WriteElementString(wordPrefix, "br", wordNamespace, null);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Sales Quota:");
writer.WriteElementString(wordPrefix, "tab", wordNamespace, null);
writer.WriteEndElement();
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, salesquota);
writer.WriteEndElement();
writer.WriteEndElement();
}
/// <summary>
/// Writes the territory sales totals as a table to the WordprocessingML document.
/// </summary>
/// <param name="writer">The XmlWriter to write the page break to.</param>
private void WriteTerritoriesTable(XmlWriter writer, string territory) {
string wordNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
string wordPrefix = "w";
// Create the territory section header.
// <w:p>
// <w:r>
// <w:t>Sales by Territory</w:t>
// </w:r>
// </w:p>
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
WriteSubtitleParagraphProperties(writer);
ApplyParagraphStyle(writer, "Heading 3");
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
WriteSubtitleRunProperties(writer);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Sales by Territory - " + territory);
writer.WriteEndElement();
writer.WriteEndElement();
// Open the table element.
writer.WriteStartElement(wordPrefix, "tbl",
wordNamespace);
ApplyTableStyle(writer, "LightList-Accent2");
// Write table headings.
writer.WriteStartElement(wordPrefix, "tr", wordNamespace);
writer.WriteStartElement(wordPrefix, "tc", wordNamespace);
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "Employee");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement(wordPrefix, "tc", wordNamespace);
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "2003");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement(wordPrefix, "tc", wordNamespace);
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, "2004");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
// write the close row
writer.WriteEndElement();
// write a row for each territory
AdventureWorksSalesData salesData = new AdventureWorksSalesData();
DataTable dt = salesData.GetSalesByTerritory(territory);
foreach (DataRow myRow in dt.Rows) {
writer.WriteStartElement(wordPrefix, "tr", wordNamespace);
foreach (DataColumn myCol in dt.Columns) {
writer.WriteStartElement(wordPrefix, "tc", wordNamespace);
writer.WriteStartElement(wordPrefix, "p", wordNamespace);
writer.WriteStartElement(wordPrefix, "r", wordNamespace);
writer.WriteElementString(wordPrefix, "t", wordNamespace, myRow[myCol].ToString());
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
// Write the close row.
writer.WriteEndElement();
}
// end the table element
writer.WriteEndElement();
}
#endregion
}