public XlsDefToWordDefConverter(XlsDef xlsDef, WordDocDef wordDef) { foreach (var area in xlsDef.Areas) { BuildArea(area, wordDef); } }
public WordDocDef Build() { var xmlDoc = new XmlDocument(); xmlDoc.Load(Stream); var wordDoc = new WordDocDef(); var root = xmlDoc.DocumentElement; if (root != null && String.Equals(root.Name, "Document", StringComparison.OrdinalIgnoreCase)) { BuildWordDoc(wordDoc, root); } return(wordDoc); }
private void BuildArea(XlsArea area, WordDocDef wordDef) { var grid = area as XlsGrid; if (grid != null) { if (grid.Items.Count == 0) { return; } //var tableBuilder = new TableBuilder(grid.GetRows(), grid.GetCols()); var rowNo = 0; var table = wordDef.AddTable(); table.Style = grid.Style; while (!grid.RowDatas.Eof()) { foreach (var gridRow in grid.Items.OfType <XlsRow>()) { BuildTable(gridRow, table, rowNo, 0); } grid.RowDatas.Next(); rowNo++; } wordDef.AddParagraph(String.Empty); return; } foreach (var item in area.Items) { if (item.GetRows() == 0) { wordDef.AddParagraph(String.Empty, item.Style); continue; } BuildItem(item, wordDef); } }
private void BuildItem(XlsItem item, WordDocDef wordDef) { var row = item as XlsRow; if (row != null) { if (row.Items.Count == 0) { return; } if (row.Items.Count == 1 && row.Items[0] is XlsCell) { var cell = (XlsCell)row.Items[0]; var val = cell.GetValue(); wordDef.AddParagraph(val != null ? val.ToString() : String.Empty, cell.Style); return; } /*var tableBuilder = new TableBuilder(row.GetRows(), row.GetCols()); * RowToTableInfo(row, tableBuilder, 0, 0);*/ var table = wordDef.AddTable(); table.Style = row.Style; BuildTable(row, table, 0, 0); return; } var grid = item as XlsGrid; if (grid != null) { if (grid.Items.Count == 0) { return; } //var tableBuilder = new TableBuilder(grid.GetRows(), grid.GetCols()); var rowNo = 0; var table = wordDef.AddTable(); table.Style = grid.Style; while (!grid.RowDatas.Eof()) { foreach (var gridRow in grid.Items.OfType <XlsRow>()) { BuildTable(gridRow, table, rowNo, 0); } grid.RowDatas.Next(); rowNo++; } wordDef.AddParagraph(String.Empty); return; } var area = item as XlsArea; if (area != null) { foreach (var subItem in area.Items) { BuildItem(subItem, wordDef); } } }
private void BuildWordDoc(WordDocDef wordDoc, XmlElement root) { var size = root.Attributes["size"]; if (size != null) { if (String.Equals(size.Value, "A5", StringComparison.OrdinalIgnoreCase)) { wordDoc.A5(); } if (String.Equals(size.Value, "A4", StringComparison.OrdinalIgnoreCase)) { wordDoc.A4(); } if (String.Equals(size.Value, "A3", StringComparison.OrdinalIgnoreCase)) { wordDoc.A3(); } } var orientation = root.Attributes["orientation"]; if (orientation != null) { if (String.Equals(orientation.Value, "portrait", StringComparison.OrdinalIgnoreCase)) { wordDoc.Portrait(); } if (String.Equals(orientation.Value, "landscape", StringComparison.OrdinalIgnoreCase)) { wordDoc.Landscape(); } } float marginFloat; var margin = root.Attributes["left"]; if (margin != null) { if (float.TryParse(margin.Value, out marginFloat)) { wordDoc.MarginLeft = marginFloat; } } margin = root.Attributes["top"]; if (margin != null) { if (float.TryParse(margin.Value, out marginFloat)) { wordDoc.MarginTop = marginFloat; } } margin = root.Attributes["right"]; if (margin != null) { if (float.TryParse(margin.Value, out marginFloat)) { wordDoc.MarginRight = marginFloat; } } margin = root.Attributes["bottom"]; if (margin != null) { if (float.TryParse(margin.Value, out marginFloat)) { wordDoc.MarginBottom = marginFloat; } } SetSectionStyle(root); _paragraphCount = 0; BuildSections(wordDoc, root); }
public WordDocBuilder(WordDocDef def) { Def = def; _style = new ContentStyle(def.Style); }