public object SaveChartToFile([FromQuery] string fileName) { byte[] chart = Convert.FromBase64String(StaticData.DataChart); string filePath = Path.ChangeExtension(fileName + " отчет с графиком", ".docx"); System.IO.File.Copy("TemplatesReportsWord/ChartReportTemplate.docx", filePath); using (FileStream fstream = System.IO.File.Open(filePath, FileMode.Open)) { List <IContentItem> fieldContents = new List <IContentItem>(); ListContent listContent = new ListContent("systems"); ListItemContent contentItems; TableContent tableContent; List <FieldContent> rows = new List <FieldContent>(); int number; foreach (var calculation in StaticData.ChartCalculation.calculations) { number = 1; tableContent = TableContent.Create("systemsMembers"); foreach (var value in calculation.values) { rows.Clear(); rows.Add(new FieldContent("number", number.ToString() + ".")); rows.Add(new FieldContent("parameterX", value.X.ToString())); rows.Add(new FieldContent("parameterY", value.Y.ToString())); tableContent.AddRow(rows.ToArray()); number++; } contentItems = new ListItemContent("system", calculation.nameSystem); contentItems.AddTable(tableContent); listContent.AddItem(contentItems); } fieldContents.Add(listContent); fieldContents.Add(new FieldContent("nameParameterX", StaticData.ChartCalculation.parameterNameX)); fieldContents.Add(new FieldContent("nameParameterY", StaticData.ChartCalculation.parameterNameY)); fieldContents.Add(new ImageContent("chart", chart)); using (var outputDocument = new TemplateProcessor(fstream).SetRemoveContentControls(true)) { outputDocument.FillContent(new Content(fieldContents.ToArray())); outputDocument.SaveChanges(); } } var memory = new MemoryStream(); using (var stream = new FileStream(filePath, FileMode.Open)) { stream.CopyTo(memory); } System.IO.File.Delete(filePath); memory.Position = 0; return(File(memory, MimeTypesMap.GetMimeType(filePath), filePath)); }
public void Export() { this.setViewModel(); var fileInfo = new FileInfo(_viewModel.TemplatePath); var newFileInfo = new FileInfo(fileInfo.DirectoryName + "\\" + fileInfo.Name.Split('.')[0] + "_new" + fileInfo.Extension); File.Delete(newFileInfo.FullName); File.Copy(fileInfo.FullName, newFileInfo.FullName); using (var outputDocument = new TemplateProcessor(newFileInfo.FullName).SetRemoveContentControls(true)) { ListContent listContent = new ListContent("Table list"); foreach (var t in _viewModel.Tables) { var listItemContent = new ListItemContent(); listContent.AddItem(listItemContent); listItemContent.AddField("Table title", "[" + t.Schema + "].[" + t.TableName + "]"); listItemContent.AddField("Table name", "[" + t.Schema + "].[" + t.TableName + "]"); listItemContent.AddField("Table description", t.Description); listItemContent.AddField("Table pk", t.PrimaryKeys); var columnContent = new TableContent("Column row"); listItemContent.AddTable(columnContent); foreach (var c in t.Columns) { columnContent.AddRow( new FieldContent("Name", c.Name), new FieldContent("Type", c.Type), new FieldContent("Null", c.Nullable), new FieldContent("Description", c.Description)); } } Content mainContent = new Content(listContent); outputDocument.FillContent(mainContent); outputDocument.SaveChanges(); } }
public static void FillContentControls(string fileName, List <DocumentData> newDocumentDatas) { List <IContentItem> contentItems = new List <IContentItem>(); foreach (var item in newDocumentDatas) { if (item is FieldDocumentData) { contentItems.Add(new FieldContent((item as FieldDocumentData).Key, (item as FieldDocumentData).Value)); } if (item is ListDocumentData) { ListContent listContent = new ListContent(item.Key); if ((item as ListDocumentData).Fields.Count != 0) { for (int i = 0; i < (item as ListDocumentData).Fields[0].Values.Count; i++) { ListItemContent listcontentItems = new ListItemContent(); foreach (var item1 in (item as ListDocumentData).Fields) { listcontentItems.AddField((item1 as FieldsDocumentData).Key, (item1 as FieldsDocumentData).Values[i]); } foreach (var item1 in (item as ListDocumentData).Tables) { TableContent tableContent = new TableContent(item1.Key); if ((item1 as TableDocumentData).Fields.Count != 0) { for (int j = ((item1 as TableDocumentData).Fields[0].Values.Count / (item as ListDocumentData).Fields[0].Values.Count) * i; j < ((item1 as TableDocumentData).Fields[0].Values.Count / (item as ListDocumentData).Fields[0].Values.Count) + (((item1 as TableDocumentData).Fields[0].Values.Count / (item as ListDocumentData).Fields[0].Values.Count) * i); j++) { List <IContentItem> tableRowContent = new List <IContentItem>(); foreach (var item2 in (item1 as TableDocumentData).Fields) { tableRowContent.Add(new FieldContent((item2 as FieldsDocumentData).Key, (item2 as FieldsDocumentData).Values[j])); } tableContent.AddRow(tableRowContent.ToArray()); } } listcontentItems.AddTable(tableContent); } listContent.AddItem(listcontentItems); } } contentItems.Add(listContent); } if (item is TableDocumentData) { TableContent tableContent = new TableContent(item.Key); if ((item as TableDocumentData).Fields.Count != 0) { for (int i = 0; i < (item as TableDocumentData).Fields[0].Values.Count; i++) { List <IContentItem> tableRowContent = new List <IContentItem>(); foreach (var item1 in (item as TableDocumentData).Fields) { tableRowContent.Add(new FieldContent((item1 as FieldsDocumentData).Key, (item1 as FieldsDocumentData).Values[i])); } tableContent.AddRow(tableRowContent.ToArray()); } } contentItems.Add(tableContent); } } var valuesToFill = new Content(contentItems.ToArray()); using (var outputDocument = new TemplateProcessor(fileName).SetRemoveContentControls(true))//true false { outputDocument.FillContent(valuesToFill); outputDocument.SaveChanges(); } }