public Stream CreateDocument(Stream templateBytes, Stream mappingBytes, DocumentPayload payload) { var templateFields = OpenXmlWordProcessing.FindTemplateFields(templateBytes); MappingInfo mappingInfo; if (mappingBytes != null) { mappingInfo = OpenXmlSpreadsheet.GetMappingInfo(mappingBytes, payload.Sources); } else { mappingInfo = OpenXmlSpreadsheet.BuildIdentityExpressions(templateFields, payload.Sources); } var results = CreateDocumentInternal(templateFields, mappingInfo.Expressions, mappingInfo.Sources); var contentControlData = BuildContentControlData(templateFields, results); return(OpenXmlWordProcessing.MergeTemplateWithMappings(contentControlData, templateBytes)); }