使用 C# 从数据表创建 HTML [英] Creating HTML from a DataTable using C#

查看:24
本文介绍了使用 C# 从数据表创建 HTML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要能够像这样将 HTML 数据传递到 Outlook 中:

I need to be able to pass HTML data into Outlook like this:

MailMessage message = new MailMessage();
message.Body = myBody;

最初,我认为我可以将纯文本传递给它并像这样使用 PadLeft:

Initially, I thought I could pass plain text to it and use PadLeft like this:

somestring.PadLeft(100);

但它没有正确对齐所有内容,因为即使 |||||MMMMM 都只有 5 个字符的长度,但它们在屏幕上的实际占用更多空间.

but it did not align everything properly because even though ||||| and MMMMM are both only 5 characters in length, they physically on the screen take up more space.

我的解决方案是将数据表中的数据转换为 HTML 表,然后将其传递到 Outlook.

My solution is to convert data that is in my datatable into an HTML table and then pass it into Outlook.

  1. 如何将数据表转换为 html 表?
  2. 是否有更好的解决方案来解决我的问题?

推荐答案

循环遍历您的 DataTable,并构建 html 字符串.IE:

Loop over your DataTable, and build up the html string. IE:

DataTable dt = new DataTable();

dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
dt.Rows.Add(new object[] { "a", "b", "c" });
dt.Rows.Add(new object[] { "d", "e", "f" });

string tab = "	";

StringBuilder sb = new StringBuilder();

sb.AppendLine("<html>");
sb.AppendLine(tab + "<body>");
sb.AppendLine(tab + tab + "<table>");

// headers.
sb.Append(tab + tab + tab + "<tr>");

foreach (DataColumn dc in dt.Columns)
{        
    sb.AppendFormat("<td>{0}</td>", dc.ColumnName);        
}

sb.AppendLine("</tr>");

// data rows
foreach (DataRow dr in dt.Rows)
{
    sb.Append(tab + tab + tab + "<tr>");

    foreach (DataColumn dc in dt.Columns)
    {
        string cellValue = dr[dc] != null ? dr[dc].ToString() : "";
        sb.AppendFormat("<td>{0}</td>", cellValue);
    }

    sb.AppendLine("</tr>");
}

sb.AppendLine(tab + tab + "</table>");
sb.AppendLine(tab + "</body>");
sb.AppendLine("</html>");

这篇关于使用 C# 从数据表创建 HTML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆