c#将数据库导出为HTML格式的表

时间:2018-04-20 17:55:24

标签: c# sqlite

我正在用C#和WPF编写一个简单的应用程序来报告。我在sqlite的数据库中有以下表:

Table1:
    id
    name
    amntOne
    amntTwo
    entryDate

Table2:
    id
    name
    amntOne
    amntTwo
    location
    entryDate

Table3:
    id
    name
    amntOne
    amntTwo
    location
    entryDate

首先,我想要从Table1和Table2中检索数据。 2,我想累积每个具有相同名称的列(例如Table1.amntOne + Table2 + amntOne)。 3,累积后将所有列插入表3.最后,我需要创建html表来填充Table3数据。

我不知道我应该从哪里开始用c#

1 个答案:

答案 0 :(得分:0)

好的,所以我想我现在已经足够了。您的SQL查询将如下所示:

SELECT
  ids.nameId as id,
  t1.name,
  IFNULL(t1.amntOne, 0) + IFNULL(t2.amntOne,0) as amntOne,
  IFNULL(t1.amntTwo, 0) + IFNULL(t2.amntTwo,0) as amntTwo,
  t2.location
FROM
  NameIdTable as ids LEFT JOIN Table1 as t1 ON t1.Id = ids.nameId
                     LEFT JOIN Table2 as t2 ON t2.Id = ids.nameId
WHERE
  t1.Id is not null or t2.Id is not null

这将返回表1(t1)或表2(t2)中至少有一个值的结果。它会添加金额。表2(t2)是唯一能够具有位置的表,因此从该处获取值。

结果将是你的Table3。然后,您可以使用结果生成HTML。假设您将结果放在DataTable中。这看起来像这样:

public string GetHtml(DataTable table3)
{
    var sb = new StringBuilder();
    sb.AppendLine("<table>");
    foreach(var row in table3.Rows) 
    {
        sb.AppendLine("    <tr>");
        sb.AppendLine($"        <td>{row["id"]}</td>");
        sb.AppendLine($"        <td>{row["name"]}</td>");
        sb.AppendLine($"        <td>{row["amntOne"]}</td>");
        sb.AppendLine($"        <td>{row["amntTwo"]}</td>");
        sb.AppendLine($"        <td>{row["location"]}</td>");
        sb.AppendLine("    </tr>");
    }
    sb.AppendLine("</table>");
    return sb.ToString();
}

根据您的需要进行修改。使用上述方法可能还需要为HTML转义名称和位置的值。您可能还想使用XmlDocument对象来构建HTML。这个答案只是为了指出你正确的方向。