public WordTableDef AddTable(ContentStyle style = null) { var result = new WordTableDef(); AddItem(result); if (style != null) { result.Style = style; } return(result); }
private void AddTableRepeatSection(WordTableDef tableDef, XmlNode node) { var dataSetAttr = node.Attributes != null ? node.Attributes["dataset"] : null; var dataSet = dataSetAttr != null ? _dataSets[dataSetAttr.Value] : _dataSets.First().Value; var reset = node.Attributes != null && node.Attributes["reset"] != null; var oldStyle = new ContentStyle(_style); try { SetSectionStyle(node); var sectionDef = tableDef.AddSection(new WordTableRepeatSectionDef(dataSet) { ResetDatas = reset, Style = _style }); _dataSetStack.Push(dataSet); try { foreach (XmlNode child in node.ChildNodes) { if (String.Equals(child.Name, "tr", StringComparison.OrdinalIgnoreCase)) { AddTableRow(sectionDef, child /*, ref rowNo*/); } } } finally { _dataSetStack.Pop(); } } finally { _style.Assign(oldStyle); } }
private void AddTable(WordGroupDef wordDoc, XmlNode table) { var oldStyle = new ContentStyle(_style); try { SetSectionStyle(table); var tableDef = new WordTableDef { Style = _style }; wordDoc.AddItem(tableDef); var tableFullWidth = table.Attributes != null ? table.Attributes["fullwidth"] : null; tableDef.FitWidth = tableFullWidth != null; // var rowNo = 0; var repeatSection = true; foreach (XmlNode child in table.ChildNodes) { if (String.Equals(child.Name, "tr", StringComparison.OrdinalIgnoreCase)) { var tableSectionDef = repeatSection ? tableDef.AddSection(new WordTableSectionDef()) : tableDef.Sections.LastOrDefault(); AddTableRow(tableSectionDef, child /*, ref rowNo*/); repeatSection = false; } else if (String.Equals(child.Name, "repeat", StringComparison.OrdinalIgnoreCase)) { AddTableRepeatSection(tableDef, child /*, ref rowNo*/); repeatSection = true; } } } finally { _style.Assign(oldStyle); } }
private void AddTableRowCell(WordTableDef table, WordTableRowDef row, XlsItem item, ref int rowNo, ref int colNo) { var field = item as XlsDataField; if (field != null) { var cell = row.AddCell(colNo); cell.Style = field.Style; cell.ColSpan = 1; var val = ((XlsCell)item).GetValue(); var type = field.Field.GetDataType(); var s = String.Empty; if (val != null) { switch (type) { case BaseDataType.Text: s = (string)val; break; case BaseDataType.Int: s = ((int)val).ToString(); break; case BaseDataType.Float: s = ((double)val).ToString("F"); break; case BaseDataType.Currency: s = ((decimal)val).ToString("N"); break; case BaseDataType.DateTime: s = ((DateTime)val).ToShortDateString(); break; case BaseDataType.Bool: s = ((bool)val) ? "Да" : "Нет"; break; default: s = val.ToString(); break; } } cell.AddText(s, field.Style); colNo++; } else { var xlsCell = item as XlsCell; if (xlsCell != null) { var cell = row.AddCell(colNo); cell.Style = xlsCell.Style; cell.ColSpan = 1; var val = xlsCell.GetValue(); cell.AddText(val != null ? val.ToString() : String.Empty, xlsCell.Style); colNo++; } else { var xlsNode = item as XlsNode; if (xlsNode != null) { var cell = row.AddCell(colNo); cell.Style = xlsNode.Style; cell.ColSpan = item.GetCols(); var textNode = item as XlsTextNode; if (textNode != null) { cell.AddText(textNode.Text, xlsNode.Style); } else { var cellNode = item as XlsCellNode; if (cellNode != null) { var val = cellNode.Cell.GetValue(); cell.AddText(val != null ? val.ToString() : String.Empty, xlsNode.Style); } } var node = xlsNode; if (node.Items.Count > 0) { AddNodeCell(node, table, rowNo + 1, colNo); } colNo += node.GetCols(); } } } }
private void AddNodeCell(XlsNode node, WordTableDef table, int rowNo, int colNo) { var row = table.InsertRow(rowNo); foreach (var item in node.Items) { /*if (item is XlsDataField) * { * var cell = row.AddCell(colNo); * cell.Style = item.Style; * cell.ColSpan = 1; * var val = ((XlsCell)item).GetValue(); * var type = ((XlsDataField) item).Field.GetDataType(); * var s = String.Empty; * if (val != null) * switch (type) * { * case CissaDataType.Text: * s = (string) val; * break; * case CissaDataType.Int: * s = ((int)val).ToString(); * break; * case CissaDataType.Float: * s = ((double)val).ToString("F"); * break; * case CissaDataType.Currency: * s = ((decimal) val).ToString("N"); * break; * case CissaDataType.DateTime: * s = ((DateTime)val).ToShortDateString(); * break; * case CissaDataType.Bool: * s = ((bool)val) ? "Да" : "Нет"; * break; * default: * s = val.ToString(); * break; * } * cell.AddText(s, item.Style); * colNo++; * } * else if (item is XlsCell) * { * var cell = row.AddCell(colNo); * cell.Style = item.Style; * cell.ColSpan = 1; * var val = ((XlsCell) item).GetValue(); * cell.AddText(val != null ? val.ToString() : String.Empty, item.Style); * colNo++; * } * else if (item is XlsNode) * { * var cell = row.AddCell(colNo); * cell.Style = item.Style; * cell.ColSpan = item.GetCols(); * if (item is XlsTextNode) * cell.AddText(((XlsTextNode)item).Text, item.Style); * else if (item is XlsCellNode) * { * var val = ((XlsCellNode)item).Cell.GetValue(); * cell.AddText(val != null ? val.ToString() : String.Empty, item.Style); * } * * var childNode = (XlsNode)item; * if (childNode.Items.Count > 0) * AddNodeCell(childNode, table, rowNo + 1, colNo); * colNo += childNode.GetCols(); * }*/ AddTableRowCell(table, row, item, ref rowNo, ref colNo); } }
private void BuildTableSectionRows(WordTableSectionDef sectionDef, Table table, WordTableDef tableDef, ref bool firstRow) { foreach (var rowDef in sectionDef.GetRows()) { //if (tableDef.Rows.ContainsKey(r)) { //var rowDef = tableDef.Rows[r]; var oldRowStyle = MergeStyle(rowDef.Style); try { var row = firstRow ? table.Rows[0] : table.InsertRow(); firstRow = false; for (var c = 0; c < tableDef.GetColCount(); c++) { if (rowDef.Cells.ContainsKey(c)) { var cellDef = rowDef.Cells[c]; var oldCellStyle = MergeStyle(cellDef.Style); try { var cellPara = AppendParagraph(/*table.Rows[r]*/ row.Cells[c]); //SetParagraphFormat(cellPara); foreach (var itemDef in cellDef.Items) { if (itemDef is WordContentItemDef) { AddParagraphContent(cellPara, (WordContentItemDef)itemDef); } } } finally { SetStyle(oldCellStyle); } } else { AppendParagraph(row.Cells[c]); } } } finally { SetStyle(oldRowStyle); } } } }
private void BuildTable(WordTableDef tableDef, DocX document) { var oldStyle = MergeStyle(tableDef.Style); try { var table = document.InsertTable(1 /*tableDef.GetRowCount() + 1*/, tableDef.GetColCount()); if (_style.HasBorders && _style.Borders == TableCellBorder.All) { table.Design = TableDesign.TableGrid; } else { table.Design = TableDesign.TableNormal; } table.AutoFit = tableDef.FitWidth ? AutoFit.Window : AutoFit.Contents; var firstRow = true; foreach (var sectionDef in tableDef.Sections) { var def = sectionDef as WordTableRepeatSectionDef; if (def != null) { var repeatSection = def; var oldSectionStyle = MergeStyle(def.Style); try { if (repeatSection.ResetDatas) { var args = new DataSetResetEventArgs { DataSet = repeatSection.Datas }; OnBeforeDataSetReset(args); repeatSection.Datas.Reset(); OnAfterDataSetReset(args); } while (!repeatSection.Datas.Eof()) { BuildTableSectionRows(def, table, tableDef, ref firstRow); repeatSection.Datas.Next(); } } finally { SetStyle(oldSectionStyle); } } else { var oldSectionStyle = MergeStyle(sectionDef.Style); try { BuildTableSectionRows(sectionDef, table, tableDef, ref firstRow); } finally { SetStyle(oldSectionStyle); } } // for (var r = 0; r <= tableDef.GetRowCount(); r++) } } finally { SetStyle(oldStyle); } }