public DocXReplacements ( |
||
p | ||
Résultat | DocX |
public DocX DocXReplacements(Person p)
{
person = p;
var texta = new List<string>(stringlist);
var dict = new Dictionary<string, string>();
for (var i = 1; i < texta.Count; i += 2)
if(!dict.ContainsKey(texta[i]))
dict.Add(texta[i], DoReplaceCode(texta[i], p));
var doc = DocXDocument.Copy();
foreach (var d in dict)
doc.ReplaceText(d.Key, Util.PickFirst(d.Value, "____"));
return doc;
}
public override void ExecuteResult(ControllerContext context) { var wc = new WebClient(); var bytes = wc.DownloadData(template); var ms = new MemoryStream(bytes); var doctemplate = DocX.Load(ms); var replacements = new EmailReplacements(DbUtil.Db, doctemplate); var q = peopleId.HasValue ? DbUtil.Db.PeopleQuery2(peopleId) : DbUtil.Db.PeopleQuery(guid); if (!q.Any()) throw new Exception("no people in query"); var finaldoc = replacements.DocXReplacements(q.First()); foreach (var p in q.Skip(1)) { finaldoc.InsertParagraph().InsertPageBreakAfterSelf(); var doc = replacements.DocXReplacements(p); finaldoc.InsertDocument(doc); } context.HttpContext.Response.Clear(); context.HttpContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; context.HttpContext.Response.AddHeader("Content-Disposition", $"attachment;filename={filename}-{DateTime.Now.ToSortableDateTime()}.docx"); finaldoc.SaveAs(context.HttpContext.Response.OutputStream); }