没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:胡涛|2024-12-26 13:11:57.137|阅读 90 次
概述:TX Text Control 中的邮件合并 类是一个强大的库,旨在通过将数据合并到模板中来自动创建文档。它充当结构化数据(例如来自数据库、JSON 或 XML)和动态文档生成之间的桥梁,对于需要自动化文档工作流程的应用程序来说非常有用。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
TX Text Control 中的邮件合并 类是一个强大的库,旨在通过将数据合并到模板中来自动创建文档。它充当结构化数据(例如来自数据库、JSON 或 XML)和动态文档生成之间的桥梁,对于需要自动化文档工作流程的应用程序来说非常有用。
从本质上讲,MailMerge 类简化了创建专业、数据驱动文档的复杂任务,允许开发人员轻松地将模板中的字段与数据源合并。模板是使用 TX Text Control 文字处理界面设计的,合并字段代表动态内容。
TX Text Control 是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打印、病案归档等功能的实现。
合并块是 TX Text Control 的 MailMerge 类中的一个关键概念,它允许在文档中动态生成结构化、可重复的内容。合并块允许开发人员有效地处理模板中的重复数据结构,例如列表、表格或嵌套区域。
从高层次上讲,合并块是模板中定义的部分,对应于数据集合或数据表。在合并过程中,MailMerge 会遍历数据源,动态创建每条记录的内容。这些合并块可以使用 MailMerge 类的现成功能进行有条件的呈现、过滤和排序。
代码级操作
但是 MailMerge 类还允许在合并过程中进行非常详细的代码级操作。这包括处理合并事件、自定义合并过程以及以编程方式控制合并操作的输出。这种级别的控制对于需要对合并过程进行细粒度控制的复杂文档生成场景至关重要。
本文介绍如何使用“字段合并” 事件来操作合并字段位于表格单元格内时由事件返回的表格单元格。在本例中,我们将使用一个非常简单的模板,该模板由两个合并字段和一个用红色突出显示的简单重复块组成。
为了合并模板,我们将使用以下简化的 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);
合并后的文档结果如下:
现在让我们附加 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;
}
因此,合并过程中所有合并的单元格都会被着色。
让我们通过添加一些逻辑使这个过程动态化。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 Text Control 中的 MailMerge 类为自动化文档生成过程提供了强大而灵活的解决方案。使用合并块和代码级操作,开发人员可以轻松创建动态、数据驱动的文档。FieldMerged 事件对合并过程提供了细粒度的控制,允许开发人员根据特定条件自定义输出。这种级别的控制对于需要精确处理数据和内容的复杂文档生成场景至关重要。
欢迎下载|体验更多TX Text Control产品
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com




近日,Stimulsoft 正式发布了2025.3 版本的报表工具,为 .NET 和 .NET Framework 平台带来了重要更新 —— 支持在报表计算过程中以解释模式运行 C# 脚本。这一功能将进一步提升报表的灵活性和扩展性,方便开发者在报表设计与运行中实现更多自定义逻辑。
在 Python 开发中处理 Microsoft Excel 文件,选择一个功能完善、易于使用的 Excel 库都能显著提升效率。Aspose.Cells for Python 兼顾了性能、灵活性与功能丰富度,能够满足不同业务场景下的表格处理需求。它不仅仅是一个读取 Excel 文件的工具,更是一套完整的电子表格处理引擎,已在金融、数据分析、自动化、报表生成等领域广泛应用。
传统的建模工具通常依赖于基于文件的存储方式,这种方式在处理小型项目时可能足够,但在面对大型团队和复杂模型时,往往会暴露出诸多问题,如文件版本冲突、数据一致性难以保证、扩展性受限等。企业级建模工具Sparx EA的DBMS存储库为企业提供了一种基于服务器的存储解决方案,通过将模型数据存储在企业级数据库管理系统(如Oracle和SQL Server)中,有效解决了这些问题。
TestComplete与BitBar的整合方案,成功破解了跨平台自动化测试的核心痛点。通过高效覆盖多技术栈、利用云端真机实现大规模并行测试、无缝融入CI/CD流程,团队得以将测试效率提升,显著加快反馈闭环,最终确保应用在多样化终端上的一致性与可靠性,驱动业务高效发展。
相关产品
TX Text Control .NET for WPF 分标准,专业,及企业三个版本,是一套专业的文字处理控件。
TX Text Control ActiveXTX Text Control ActiveX是一个强大的文字处理组件,为开发者提供一个广泛的文字处理功能。它提供了全面的文本格式,邮件合并功能和文字处理关键性功能,如表格支持,图片,页眉和页脚、页面部分等。
最新文章 MORE
相关文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 
渝公网安备
50010702500608号
首页