コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }