使用StringBuilder的AppendFormat方法创建表格

5

我在使用StringBuilder类的AppendFormat方法时遇到了问题。 我正在创建表格并将数据附加到字符串生成器对象中以通过邮件发送,但是当我看到我发送的邮件时,它不像表格,它们的标题和相应内容错位了。 我希望表格像Microsoft Word表格一样可以用线分隔开。

我该如何实现它?

我正在使用以下代码:Body是一个StringBuilder对象

if (  dic1 != null )
{
     //Body.AppendFormat("Client: " + cl + " Success. " + dic1.Count + " :");
     Body.AppendFormat("<br/><table>");
     Body.AppendFormat("<h1><tr><td>#</td><td>Files Name</td></tr></h1>");
     int count = 1;
      foreach ((KeyValuePair<string, string> pair in  dic1)
               {
                    if (!String.IsNullOrEmpty(pair.Key))
                     {

                      Body.AppendFormat("<tr><td>"+count.ToString()+"</td><td>" + pair.Key + "</td><td> " + pair.Value + "</td></tr>");
                        count++;
                        //Body.Append( );
                    }
                }

                Body.AppendFormat("</table>");

以下是我在收件箱中收到的输出。
 # File Name Error 
 1 txt1.txt Loading File 'txt1.txt' failed: The specified File already exists in the system 
 2 txt2.txt Loading File 'txt2.txt' failed: The specified File already exists in the system 
 3 txt3.txt Loading File 'txt3.txt' failed: The specified File already exists in the system 

3
无论如何,这都是一张桌子;你想做的是给这张表格添加样式;你看过 CSS 吗?或者旧的“border”等属性? - Marc Gravell
2
在<table>标签下直接使用<h1>标签是无效的,将其移到<td>标签中。 - Michal Klouda
我找不到任何边框属性。 - Pramod
3个回答

5

希望你可以通过这个例子来理解应该如何操作。 如果不行,请告诉我。我会帮助你。

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append("<table>");
sb.AppendFormat("<tr><td>Request Name:</td><td>{0}</td></tr>", txtBugName.Text.Trim());
sb.AppendFormat("<tr><td>Category:</td><td>{0}</td></tr>", ddlModule.SelectedValue);
sb.AppendFormat("<tr><td>Sub-Category:</td><td>{0}</td></tr>", ddlPage.SelectedValue);
sb.AppendFormat("<tr><td>Description:</td><td>{0}</td></tr>", txtComments.Text.Trim());
sb.AppendFormat("<tr><td>Email is:</td><td>{0}</td></tr>", txtemail.Text.Trim());
sb.Append("<table>");

那么我假设IsBodyHtml属性为真,因为您已经在使用HTML了。

Roshana,我尝试了这个,这个表格里也没有边框 :( - Pramod

1

做类似这样的事情

    String to, subject, message;
    bool isHtml;
    isHtml = true;
    StringBuilder sbEmail = new StringBuilder();

    to = "abc@abc.com";
   // string url = "xxxxx";

    //  string refurl = Request.UrlReferrer.ToString();
    subject = "Some subject";

    // Keep Option for Otehr Language also by defining predefined 
    // Hidden Labels for Message in L1, L2, L3, L4, L5 --
    // Also add dir tag to the Table
    sbEmail.Append("<table><tr><td style='font-family: Arial; font-size: 10pt;'>");
    sbEmail.Append("Hello,");
    sbEmail.Append("<br><br>");
    sbEmail.Append("");
    sbEmail.Append("Following Comments has been posted");
    sbEmail.Append("<br><br>");
    sbEmail.Append(strComment);
    sbEmail.Append("<br><br>");
    sbEmail.Append("Article Title :");
    sbEmail.Append("<br>");
    sbEmail.Append(strArticleTitle);
    sbEmail.Append("<br><br>");
    sbEmail.Append("Name : " + strName);
    sbEmail.Append("<br>");
    sbEmail.Append("Country : " + strCountry);
    sbEmail.Append("<br><br>");
    sbEmail.Append("Please logon to admin section of website to activate this comments");
    sbEmail.Append("<br>");
    sbEmail.Append("http://xxxxx");
    sbEmail.Append("</td></tr></table>");
    message = sbEmail.ToString();

0
为了获得所需的边框效果,您应该在表格和标签上都加入内联样式。 <table cellpadding='5' cellspacing='2' style='border:1px solid black;'> <td style='border: 1px solid black;'> 这样应该就能得到期望的样式了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接