Add DocumentFormat.OpenXml assembly and start working on creation of the reports. This assembly is provided by the open xml SDK 2.0. It can be downloaded from the Microsoft download center.
The following references are used for creation of the word document from this assembly.
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
We can first start with simple adding text in the word document from the code. To add text in the word document add the assembly reference and then add above namespaces:
First create a paragraph object and set its properties like below
using (WordprocessingDocument WorDocument = WordprocessingDocument.Create(@"c:\Test.docx", WordprocessingDocumentType.Document))
{
// Add a new main document part.
MainDocumentPart mainPart = WorDocument.AddMainDocumentPart();
//Create Document tree for simple document.
mainPart.Document = new Document();
//Create Body (this element contains other elements that we want to include
Body body = new Body();
FontSize fontsize = new FontSize();
fontsize.Val = 38;
Color TextColor = new Color();
TextColor.Val = "4F81BD";
Bold boldFont = new Bold();
boldFont.Val = DocumentFormat.OpenXml.Wordprocessing.BooleanValues.On;
Paragraph AuthorPara = new Paragraph();
Run run = new Run();
Text TextLine = new Text("Created by: " + System.Environment.UserName);
run.Append(TextLine);
AuthorPara.Append(run);
RunProperties runProps = new RunProperties();
RunFonts runFonts = new RunFonts();
runFonts.Ascii = "Segoe UI";
runProps.Append(fontsize);
runProps.Append(runFonts);
runProps.Append(boldFont);
runProps.Append(TextColor);
run4.PrependChild
body.Append(AuthorPara);
mainPart.Document.Append(body);
// Save changes to the main document part.
mainPart.Document.Save();
}
For creating table in the word document create table object and set properties as below
Table object and properties
Table table = new Table();
TableProperties tblPr = new TableProperties();
TableBorders tblBorders = new TableBorders();
TableWidth tblWidth = new TableWidth();
tblWidth.Width = 550;
tblBorders.TopBorder = new TopBorder();
tblBorders.TopBorder.Val = new EnumValue
tblBorders.BottomBorder = new BottomBorder();
tblBorders.BottomBorder.Val = new EnumValue
tblBorders.LeftBorder = new LeftBorder();
tblBorders.LeftBorder.Val = new EnumValue
tblBorders.RightBorder = new RightBorder();
tblBorders.RightBorder.Val = new EnumValue
tblBorders.InsideHorizontalBorder = new InsideHorizontalBorder();
tblBorders.InsideHorizontalBorder.Val = BorderValues.Single;
tblBorders.InsideVerticalBorder = new InsideVerticalBorder();
tblBorders.InsideVerticalBorder.Val = BorderValues.Single;
tblPr.Append(tblBorders);
table.Append(tblPr);
tblPr = new TableProperties();
tblPr.Append(tblWidth);
Create new table row and table cell
//Table Start
TableRow tr = new TableRow();
TableCell tc = new TableCell(AuthorPara);//Paragraph above
TableCellWidth tblCellWidth = new TableCellWidth();
tblCellWidth.Width = 600;
TableCellProperties tcp = new TableCellProperties();
GridSpan griedSpan = new GridSpan();
griedSpan.Val = 11;
tcp.Append(griedSpan);
tcp.Append(tblCellWidth);
tc.Append(tcp);
tr.Append(tc);
table.Append(tr);
In this way table can be created in the open xml using wordprocessingML
Woh !! that's the thing I was looking for. Really very impressive way to play with documents.
ReplyDelete