public override IDocument Render(IDictionary<string, object> context) { Debug.Assert(context != null); Debug.Assert(this.engine != null); if (context == null) { throw new ArgumentNullException("context"); } //执行主要内容的渲染过程 using (var inStream = new MemoryStream(base.GetBuffer(), false)) using (var reader = new StreamReader(inStream, Encoding.UTF8)) using (var ws = new MemoryStream()) using (var writer = new StreamWriter(ws)) { //执行渲染 this.engine.Evaluate(context, reader, writer); writer.Flush(); ws.Flush(); var resultDoc = new ExcelMLTemplate(); resultDoc.PutBuffer(ws.ToArray()); return resultDoc; } }
private static void WriteCompiledMainContent(ExcelMLTemplate t, XmlDocument xml) { Debug.Assert(t != null); Debug.Assert(xml != null); using (var ms = new MemoryStream()) using (var writer = new ExcelMLTextWriter(ms)) { writer.Formatting = Formatting.None; //对于 Velocity 模板,最好格式化 xml.WriteTo(writer); writer.Flush(); ms.Flush(); t.PutBuffer(ms.ToArray()); } }