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

时间:2013-02-05 03:15:17

标签: c# .net reporting

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

是否有人知道允许.NET应用程序使用的任何库或第三方工具?

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

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

任何帮助或指示都将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

在这里看看有关它们的SO的一些问题,这样你就可以了解人们会推荐什么。例如,看看;

答案 1 :(得分:0)

您不需要第三方库来完成您的需要。您只需循环遍历Collection,然后为每条记录添加分隔符。然后将string写为具有相应header的回复。

以下是一个示例,但该概念与任何类型的CollectionList类型保持相关。

Datatable to Text File

这是一个示例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();
 }