C# 使用stringbuilder为数据库报告输出HTML是否可以?

C# 使用stringbuilder为数据库报告输出HTML是否可以?,c#,sql,reporting,C#,Sql,Reporting,我有一个非常简单的应用程序来处理产品订单 我想做一些报告,比如每日销售报告 我的想法是: 我想构建一个有吸引力的HTML页面,然后将每一行HTML复制/粘贴到类似的代码中 Stringbuilder sb = new StringBuilder(); sb.AppendLine("<html><body>"); // each HTML line here sb.AppendLine(products.GetQuantitySold()); Stringbuilder

我有一个非常简单的应用程序来处理产品订单

我想做一些报告,比如每日销售报告

我的想法是:

我想构建一个有吸引力的HTML页面,然后将每一行HTML复制/粘贴到类似的代码中

Stringbuilder sb = new StringBuilder(); 
sb.AppendLine("<html><body>"); // each HTML line here
sb.AppendLine(products.GetQuantitySold());
Stringbuilder sb=新建Stringbuilder();
sb.追加行(“”;//这里的每个HTML行
sb.AppendLine(products.getquantitysell());
然后在保存到磁盘后,只需打开保存的HTML文件

对于简单的SQL报告,这可以吗?有更好更普遍的方法吗?我希望避免使用任何第三方产品或库


谢谢

这完全可以接受,就像添加字符串一样(
s+=aValue
),但是
StringBuilder
要快得多

您可以考虑使用HTMLTExtReTrter,参见:

最后一个建议:您可以在光盘上存储一个带有模板HTML的文件,在某些位置包含变量,如:

 <html><body>[GetQuantitySold]</body></html>

当然,为了提高性能,您也可以使用
StringBuilder
替换值。

这是完全可以接受的,就像添加字符串(
s+=aValue
),但是
StringBuilder
要快得多

您可以考虑使用HTMLTExtReTrter,参见:

最后一个建议:您可以在光盘上存储一个带有模板HTML的文件,在某些位置包含变量,如:

 <html><body>[GetQuantitySold]</body></html>

当然,为了提高性能,您也可以使用
StringBuilder
来替换这些值。

始终存在专门创建的HTMLTextWriter,这样您就不必自己损坏这些标记:


总会有专门创建的HTMLTextWriter,这样您就不必自己破坏这些标记:

这是可以接受的

还可以查看AppendFormat

您可以按如下方式使用它:

sb.AppendFormat("<li>{0} {1}</li>", person.FirstName, person.LastName);
选择您真正喜欢的

这是可以接受的

还可以查看AppendFormat

您可以按如下方式使用它:

sb.AppendFormat("<li>{0} {1}</li>", person.FirstName, person.LastName);

选择你真正喜欢的

简言之,是的,很好。但是我建议使用,因为它可以为您生成html标记,并允许您通过编程控制标记属性等

简单的例子:

StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter))
{
    //Begin list
    textWriter.RenderBeginTag(HtmlTextWriterTag.Ul);

    //List items
    textWriter.RenderBeginTag(HtmlTextWriterTag.Li);

    //Links 
    textWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.com");
    textWriter.RenderBeginTag(HtmlTextWriterTag.A);
    textWriter.Write("Google");

    textWriter.RenderEndTag();//End A tag
    textWriter.RenderEndTag();//End Li tag

    //Render list end tag
    textWriter.RenderEndTag();
}

简言之,是的,很好。但是我建议使用,因为它可以为您生成html标记,并允许您通过编程控制标记属性等

简单的例子:

StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter))
{
    //Begin list
    textWriter.RenderBeginTag(HtmlTextWriterTag.Ul);

    //List items
    textWriter.RenderBeginTag(HtmlTextWriterTag.Li);

    //Links 
    textWriter.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.google.com");
    textWriter.RenderBeginTag(HtmlTextWriterTag.A);
    textWriter.Write("Google");

    textWriter.RenderEndTag();//End A tag
    textWriter.RenderEndTag();//End Li tag

    //Render list end tag
    textWriter.RenderEndTag();
}

这将很好地工作,如果你对它感到满意,那么没有问题。就个人而言,我会使用某种模板方法。将每个HTML文件作为实际文件,并将动态值作为某个唯一的合并字段,然后可以加载该文件,替换合并字段,然后保存到磁盘。一个独特的字段可能看起来像
{field:quantitysell}
我很好奇,为什么你不想使用第三方库?这会很好,如果你对它满意,那就没问题了。就个人而言,我会使用某种模板方法。将每个HTML文件作为实际文件,并将动态值作为某个唯一的合并字段,然后可以加载该文件,替换合并字段,然后保存到磁盘。一个独特的字段可能看起来像
{field:quantitysell}
我很好奇,为什么你不想使用第三方库?当然还有html文本编写器,在另一个答案中说。这也是一个不错的选择!当然还有html文本编写器,在另一个答案中说。这也是一个不错的选择!我喜欢模板的想法。这正是我所需要的,比T4等东西简单得多。谢谢我喜欢模板的想法。这正是我所需要的,比T4等东西简单得多。谢谢