public Task <bool> FillAsync(ITemplate t, IDictionary <string, dynamic> stuffing, Stream output) { using (Stream docstream = new MemoryStream()) { byte[] templateBytes = t.GetTemplateBytes(); docstream.Write(templateBytes, 0, templateBytes.Length); docstream.Flush(); docstream.Position = 0; using (WordprocessingDocument doc = WordprocessingDocument.Open(docstream, true)) { // main document part if (doc.MainDocumentPart != null) { doPart(doc.MainDocumentPart, stuffing); } var headers = doc.MainDocumentPart.HeaderParts.ToList(); headers.ForEach(p => { doPart(p, stuffing); }); var footers = doc.MainDocumentPart.FooterParts.ToList(); footers.ForEach(p => { doPart(p, stuffing); }); } docstream.Position = 0; XmlTemplateTool.CopyStream(docstream, output); } return(Task.FromResult <bool>(true)); }
public Task <bool> FillAsync(ITemplate t, IDictionary <string, dynamic> stuffing, Stream output) { using (Stream docstream = new MemoryStream()) { byte[] templateBytes = t.GetTemplateBytes(); docstream.Write(templateBytes, 0, templateBytes.Length); docstream.Flush(); docstream.Position = 0; using (SpreadsheetDocument doc = SpreadsheetDocument.Open(docstream, true)) { // shared string part if (doc.WorkbookPart.SharedStringTablePart != null) { doPart(doc.WorkbookPart.SharedStringTablePart, stuffing); } // some other part if (doc.WorkbookPart.WorkbookStylesPart != null) { doPart(doc.WorkbookPart.WorkbookStylesPart, stuffing); } // some other part if (doc.WorkbookPart.CalculationChainPart != null) { doPart(doc.WorkbookPart.CalculationChainPart, stuffing); } var worksheets = doc.WorkbookPart.WorksheetParts.ToList(); worksheets.ForEach(w => { doPart(w, stuffing); }); } docstream.Position = 0; XmlTemplateTool.CopyStream(docstream, output); } return(Task.FromResult <bool>(true)); }