private static void ClonePageAndFill(DataRowView drv, OpenXmlElement item, ref OpenXmlElement addItem, SimplePropertyCollection templateSimples) { foreach (SdtElement sdtElement in item.Descendants <SdtElement>()) { foreach (SdtAlias ite11 in sdtElement.Descendants <SdtAlias>()) { DCTSimpleProperty temSimple = templateSimples[ite11.Val]; if (temSimple != null) { var items = sdtElement.Descendants <Run>(); if (items.Count() > 0) { Run runElement = items.First(); runElement.RemoveAllChildren <Text>(); runElement.AppendChild <Text>(new Text(GeneralFormatter.ToString(drv[temSimple.TagID], temSimple.FormatString))); if (temSimple.IsReadOnly) { Lock lockControl = new Lock(); lockControl.Val = LockingValues.SdtContentLocked; sdtElement.SdtProperties.Append(lockControl); } } } } } }
private static void CopyPageFillTemplate(DataRowView drv, Body wordBody, SimplePropertyCollection templateSimples) { foreach (SdtElement fillItem in wordBody.Descendants <SdtElement>()) { foreach (SdtAlias sdtAlias in fillItem.Descendants <SdtAlias>()) { DCTSimpleProperty dcts = templateSimples[sdtAlias.Val]; if (dcts != null) { var items = fillItem.Descendants <Run>(); if (items.Count() > 0) { Run runElement = items.First(); runElement.RemoveAllChildren <Text>(); runElement.AppendChild <Text>(new Text(GeneralFormatter.ToString(drv[dcts.TagID], dcts.FormatString))); if (dcts.IsReadOnly) { Lock lockControl = new Lock(); lockControl.Val = LockingValues.SdtContentLocked; fillItem.SdtProperties.Append(lockControl); } } } } } }
public override void Process() { DCTSimpleProperty property = DataProperty as DCTSimpleProperty; if (null != property) { var containerElement = document.MainDocumentPart.Document.Body .Descendants <SdtElement>().Where(o => o.SdtProperties.Descendants <SdtAlias>().Any(a => a.Val == DataProperty.TagID)).FirstOrDefault(); if (null == containerElement) { return; } object text = property.Value; var pas = containerElement.Descendants <Paragraph>().ToList(); Paragraph p = pas.FirstOrDefault(); if (p == null) { var runElement = containerElement.Descendants <Run>().First(); FillText(ref runElement, GeneralFormatter.ToString(text, property.FormatString)); /*var runElement = containerElement.Descendants<Run>().First(); * runElement.RemoveAllChildren(); * runElement.AppendChild<Text>(new Text(GeneralFormatter.ToString(strAlltext, property.FormatString))); */ } else { string[] rows = GetMultiRowsValues(property); for (int i = 0; i < rows.Length; i++) { if (i == 0) { Run runElement = GetRunElement(p); FillText(runElement, GeneralFormatter.ToString(rows[i], property.FormatString)); } else { Paragraph addrow; if (i < pas.Count) { addrow = pas[i]; } else { addrow = p.CloneNode(true) as Paragraph; } Run addrunelement = GetRunElement(addrow); FillText(addrunelement, GeneralFormatter.ToString(rows[i], property.FormatString)); if (i >= pas.Count) { var lastCon = containerElement.Descendants <Paragraph>().Last(); lastCon.InsertAfterSelf <Paragraph>(addrow); } } } } if (property.IsReadOnly) { Lock lockControl = new Lock(); lockControl.Val = LockingValues.SdtContentLocked; containerElement.SdtProperties.Append(lockControl); } } }
public override void Process() { var titleRow = document.MainDocumentPart.Document.Body .Descendants <TableRow>().Where(o => o.Descendants <BookmarkStart>().Any(mark => mark.Name == DataProperty.TagID)).FirstOrDefault(); var sdtElements = titleRow.Descendants <SdtElement>().Where(o => o.SdtProperties.Descendants <SdtAlias>().Any(a => a.Val != null)).ToList(); var bookmarkStart = titleRow.Descendants <BookmarkStart>().Where(o => o.Name == DataProperty.TagID).FirstOrDefault(); List <string> properties = new List <string>(); for (int i = 0; i < sdtElements.Count; i++) { properties.Add(sdtElements[i].Descendants <SdtAlias>().FirstOrDefault().Val.Value); } TableRow curRow = titleRow; foreach (DCTWordDataObject wordDataObj in DataProperty.DataObjects) { TableRow newRow = curRow.InsertAfterSelf <TableRow>((TableRow)curRow.NextSibling <TableRow>().CloneNode(true)); TableCell firstCell = newRow.GetFirstChild <TableCell>(); int columnFirst = Int32Value.ToInt32(bookmarkStart.ColumnFirst); //== default(Int32Value) ? bookmarkStart.ColumnFirst.Value : 0; int columnLast = Int32Value.ToInt32(bookmarkStart.ColumnLast); for (int j = columnFirst; j <= columnLast; j++) { DCTDataProperty dataProperty = wordDataObj.PropertyCollection[properties[j - columnFirst]]; if (dataProperty is DCTSimpleProperty) { DCTSimpleProperty simpleProperty = dataProperty as DCTSimpleProperty; TableCell cell = GetCellByIndex(firstCell, j); Paragraph p = cell.GetFirstChild <Paragraph>(); string[] rows = GetMultiRowsValues(simpleProperty); for (int i = 0; i < rows.Length; i++) { if (i == 0) { Run runElement = GetRunElement(p); FillText(ref runElement, GeneralFormatter.ToString(rows[i], simpleProperty.FormatString)); } else { Paragraph addrow = p.CloneNode(true) as Paragraph; Run addrunelement = GetRunElement(addrow); //addrow.GetFirstChild<Run>(); FillText(ref addrunelement, GeneralFormatter.ToString(rows[i], simpleProperty.FormatString)); p.InsertAfterSelf <Paragraph>(addrow); } } } } curRow = newRow; } }