使用.NET的基于文本的报表(.TXT)

本文关键字:NET 报表 TXT 文本 于文本 使用 | 更新日期: 2023-09-27 17:57:55

我需要创建基于文本的报告(.txt格式),其中包括页眉、页脚、页码等。这与使用COBOL编写报告的方式类似。

有人知道有任何库或第三方工具允许.NET应用程序这样做吗?

我不想使用Reporting Services或其他任何东西。我只想创建一个数据集,然后创建我自己的报告,这些报告格式良好,列之间的间距正确。

今天,我通过在我的应用程序中加入Powershell的format table命令来实现这一点(没有标题、页码和页脚)。它似乎可以很好地格式化我的报告,而不必担心间距等,而且我可以很容易地对列进行排序。

如有任何帮助或指示,我们将不胜感激。

使用.NET的基于文本的报表(.TXT)

我倾向于查看一些基于.NET的模板引擎。我以前使用过模板引擎(虽然不是在.NET中),我认为它们可以很好地满足您的需求。

看看这里与SO相关的一些问题,这样你就能了解人们会推荐什么。例如,查看;

  • 在.NET中生成简单报表的模板引擎
  • .Net模板引擎/报表解决方案

您不需要第三方库来完成所需内容。您只需要循环使用Collection,然后为每条记录添加一个分隔符。然后将CCD_ 2作为具有适当CCD_ 3的响应写入。

这里有一个示例,但该概念与任何类型的CollectionList类型都相关。

数据表到文本文件

下面是一个示例DataTable扩展方法,它将它转换为字符串,以便使用可选的分隔符进行输出。

public static string GetStringSeperatedBy(this DataTable dt, string delimiter)
{
    var sb = new StringBuilder();
    var columnNames = dt.Columns.Cast<DataColumn>().Select(column => string.Format("'"{0}'"", column.ColumnName)).ToArray();
    sb.AppendLine(string.Join(delimiter, columnNames));
    foreach (DataRow row in dt.Rows)
    {
       var fields = row.ItemArray.Select(field => string.Format("'"{0}'"", field.ToString().Replace(Environment.NewLine, " ").Replace("'"", ""))).ToArray();
            sb.AppendLine(string.Join(delimiter, fields));
    }
    return sb.ToString();
 }