提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉伟伟|2024-12-10 13:51:52.650|阅读 8 次
概述:本文介绍如何在 .NET C# 中的邮件合并过程中操作表格单元格。可以使用 FieldMerged 事件在合并后操作表格单元格。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
TX Text Control 中的邮件合并 类是一个强大的库,旨在通过将数据合并到模板中来自动创建文档。它充当结构化数据(例如来自数据库、JSON 或 XML)和动态文档生成之间的桥梁,对于需要自动化文档工作流程的应用程序来说非常有用。
从本质上讲,MailMerge 类简化了创建专业、数据驱动文档的复杂任务,允许开发人员轻松地将模板中的字段与数据源合并。模板是使用 TX Text Control 文字处理界面设计的,合并字段代表动态内容。
合并区块
合并块是 TX Text Control 的 MailMerge 类中的一个关键概念,它允许在文档中动态生成结构化、可重复的内容。合并块允许开发人员有效地处理模板中的重复数据结构,例如列表、表格或嵌套区域。
从高层次上讲,合并块是模板中定义的部分,对应于数据集合或数据表。在合并过程中,MailMerge 会遍历数据源,动态创建每条记录的内容。这些合并块可以使用 MailMerge 类的现成功能进行有条件的呈现、过滤和排序。
代码级操作
但是 MailMerge 类还允许在合并过程中进行非常详细的代码级操作。这包括处理合并事件、自定义合并过程以及以编程方式控制合并操作的输出。这种级别的控制对于需要对合并过程进行细粒度控制的复杂文档生成场景至关重要。
本文介绍如何使用“字段合并” 事件来操作合并字段位于表格单元格内时由事件返回的表格单元格。在本例中,我们将使用一个非常简单的模板,该模板由两个合并字段和一个用红色突出显示的简单重复块组成。
TX 文本控件中的邮件合并模板
为了合并模板,我们将使用以下简化的 JSON 数据。
[ { "invoice-id": "1", "invoice-date": "2019-01-01", "line-items": [ { "product-id": "1", "quantity": "1", "unit-price": "8" }, { "product-id": "2", "quantity": "2", "unit-price": "200" }, { "product-id": "3", "quantity": "1", "unit-price": "100" }, { "product-id": "4", "quantity": "1", "unit-price": "3" } ] } ]
为了合并此模板,将使用以下代码:
textControl1.Load("template.tx", TXTextControl.StreamType.InternalUnicodeFormat); MailMerge mailMerge = new MailMerge(); mailMerge.TextComponent = textControl1; string jsonData = File.ReadAllText("data.json"); mailMerge.MergeJsonData(jsonData);
合并后的文档结果如下:
TX 文本控件中的合并文档
FieldMerged 事件
现在让我们附加 FieldMerged 事件来操作合并过程。
textControl1.Load("template.tx", TXTextControl.StreamType.InternalUnicodeFormat); MailMerge mailMerge = new MailMerge(); mailMerge.TextComponent = textControl1; mailMerge.FieldMerged += MailMerge_FieldMerged; string jsonData = File.ReadAllText("data.json"); mailMerge.MergeJsonData(jsonData);
每次合并字段时(成功或失败),都会调用此事件。如果字段位于表格单元格内,则返回表格单元格。
在此事件中,我们检查TableCell属性是否不为空。如果不为空,我们将设置单元格的背景颜色。
private void MailMerge_FieldMerged(object sender, MailMerge.FieldMergedEventArgs e) { if (e.TableCell != null) { e.TableCell.CellFormat.BackColor = Color.Red; e.TableCell.CellFormat.BottomBorderWidth = 60; e.TableCell.CellFormat.BottomBorderColor = Color.Blue; } }
因此,合并过程中所有合并的单元格都会被着色。
TX 文本控件中带有彩色单元格的合并文档
动态单元格颜色
让我们通过添加一些逻辑使这个过程动态化。CellFilterInstructions类用于将一个值与给定值进行比较以返回特定的颜色。
using System; using System.Drawing; using System.Linq; public class CellFilterInstructions { public double? CompareValue { get; set; } = null; public RelationalOperator? Operator { get; set; } = null; public Color TrueColor { get; set; } = Color.White; public Color FalseColor { get; set; } = Color.White; public enum RelationalOperator { Equals = 0, NotEqual, LessThan, GreaterThan, } // evaluates the instruction and returns the proper color public Color? GetColor(string value) { if (Double.TryParse(ParseToNumber(value), out double dValue) == true) { switch (Operator) { case RelationalOperator.Equals: return (dValue == CompareValue ? TrueColor : FalseColor); case RelationalOperator.NotEqual: return (dValue != CompareValue ? TrueColor : FalseColor); case RelationalOperator.GreaterThan: return (dValue > CompareValue ? TrueColor : FalseColor); case RelationalOperator.LessThan: return (dValue < CompareValue ? TrueColor : FalseColor); default: return null; } } else return null; } private string ParseToNumber(string text) { var numericChars = "0123456789,.".ToCharArray(); return new String(text.Where(c => numericChars.Any(n => n == c)).ToArray()); } }
以下代码创建了一条新规则,如果值大于 10,则返回绿色,如果值小于 10,则返回红色。此规则被序列化并存储在表单元格的Name属性中。
textControl1.Load("template.tx", TXTextControl.StreamType.InternalUnicodeFormat); CellFilterInstructions cellFilterInstructions = new CellFilterInstructions() { CompareValue = 10, Operator = CellFilterInstructions.RelationalOperator.GreaterThan, TrueColor = Color.Green, FalseColor = Color.Red }; textControl1.Tables[1].Cells[2,2].Name = JsonConvert.SerializeObject(cellFilterInstructions); MailMerge mailMerge = new MailMerge(); mailMerge.TextComponent = textControl1; mailMerge.FieldMerged += MailMerge_FieldMerged; string jsonData = File.ReadAllText("data.json"); mailMerge.MergeJsonData(jsonData);
在FieldMerged事件中,此规则被放弃并评估。然后,返回的颜色将应用于表格单元格的表格单元格格式。
private void MailMerge_FieldMerged(object sender, MailMerge.FieldMergedEventArgs e) { // custom field handling if (e.TableCell == null) return; if (e.TableCell.Name != "") { CellFilterInstructions instructions = (CellFilterInstructions)JsonConvert.DeserializeObject( e.TableCell.Name, typeof(CellFilterInstructions)); // retrieve the color Color? color = instructions.GetColor(e.MailMergeFieldAdapter.ApplicationField.Text); // apply the color if (color != null) e.TableCell.CellFormat.BackColor = (Color)color; } }
以下屏幕截图显示了此合并过程的结果:
TX 文本控件中带有条件单元格颜色的合并文档
结论
TX Text Control 中的 MailMerge 类为自动化文档生成过程提供了强大而灵活的解决方案。使用合并块和代码级操作,开发人员可以轻松创建动态、数据驱动的文档。FieldMerged 事件对合并过程提供了细粒度的控制,允许开发人员根据特定条件自定义输出。这种级别的控制对于需要精确处理数据和内容的复杂文档生成场景至关重要。
产品试用下载、价格咨询、优惠获取,或其他任何问题,请联系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都网TX Text Control .NET for WPF 分标准,专业,及企业三个版本,是一套专业的文字处理控件。
TX Text Control ActiveX是一个强大的文字处理组件,为开发者提供一个广泛的文字处理功能。它提供了全面的文本格式,邮件合并功能和文字处理关键性功能,如表格支持,图片,页眉和页脚、页面部分等。
TX Text Control .NET for Windows Forms 是一套功能丰富的文字处理控件。
本文将探讨如何使用 Spire.XLS for .NET 在 C# 程序中导入 Excel 数据到数据库以及导出数据库到 Excel 文件,实现数据在 Excel 和数据库之间无缝流转。
在本文中,我们将向您展示如何逐步执行此操作,告诉您什么是 SCORM,为什么需要使用它,并列出我们测试过的最佳 SCORM 转换工具之一——iSpring Suite。
本文主要介绍如何使用Kendo UI for Angular组件的ListView来构建带有图表的仪表板,欢迎下载新版控件体验!
在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码。
TX Text Control .NET for WPF 分标准,专业,及企业三个版本,是一套专业的文字处理控件。
TX Text Control ActiveXTX Text Control ActiveX是一个强大的文字处理组件,为开发者提供一个广泛的文字处理功能。它提供了全面的文本格式,邮件合并功能和文字处理关键性功能,如表格支持,图片,页眉和页脚、页面部分等。
TX Text Control .NET for Windows FormsTX Text Control .NET for Windows Forms 是一套功能丰富的文字处理控件。
TX Text Control .NET Server for ASP.NET一个将文档处理集成到 Web 应用程序中的文档管理控件。
TX Text Control ActiveX ServerTX Text Control ActiveX Server是一个完全可编程的,用于ASP.NET服务器环境与 Microsoft Internet Explorer的文字处理引擎。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢