C#中将DataTable导出为HTML的方法

简介: 今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,。 首先,我们要绑定DataTable和 DataGridView。

今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,。

首先,我们要绑定DataTable和 DataGridView。

A. 通过DataTable绑定DataGridView

1. 创建DataTable,添加列

 DataTable table = new DataTable();  
 table.Columns.Add("ID", typeof(int));  
 table.Columns.Add("NAME", typeof(string));  
 table.Columns.Add("CITY", typeof(string));  

 2. 再添加行

table.Rows.Add(111, "Devesh", "Ghaziabad");  
table.Rows.Add(222, "ROLI", "KANPUR");  
table.Rows.Add(102, "ROLI", "MAINPURI");  
table.Rows.Add(212, "DEVESH", "KANPUR");

 3. 绑定DataGridView

dataGridView1.DataSource=table;  

 4. 运行结果

B. 将DataTable 导出为 HTML

我写了一组代码来为每个DataTable创建HTML文本。你可以在你的项目中直接引用。

代码如下:

protected string ExportDatatableToHtml(DataTable dt)  
{  
StringBuilder strHTMLBuilder = new StringBuilder();  
strHTMLBuilder.Append("<html >");  
strHTMLBuilder.Append("<head>");  
strHTMLBuilder.Append("</head>");  
strHTMLBuilder.Append("<body>");  
strHTMLBuilder.Append("<table border='1px' cellpadding='1' cellspacing='1' bgcolor='lightyellow' style='font-family:Garamond; font-size:smaller'>");  
  
strHTMLBuilder.Append("<tr >");  
foreach (DataColumn myColumn in dt.Columns)  
{  
strHTMLBuilder.Append("<td >");  
strHTMLBuilder.Append(myColumn.ColumnName);  
strHTMLBuilder.Append("</td>");  
  
}  
strHTMLBuilder.Append("</tr>");  
  
  
foreach (DataRow myRow in dt.Rows)  
{  
  
strHTMLBuilder.Append("<tr >");  
foreach (DataColumn myColumn in dt.Columns)  
{  
strHTMLBuilder.Append("<td >");  
strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString());  
strHTMLBuilder.Append("</td>");  
  
}  
strHTMLBuilder.Append("</tr>");  
}  
  
//Close tags.  
strHTMLBuilder.Append("</table>");  
strHTMLBuilder.Append("</body>");  
strHTMLBuilder.Append("</html>");  
  
string Htmltext = strHTMLBuilder.ToString();  
  
return Htmltext;  
  
}  

 C. 代码理解

  • 我们创建了一个函数,使用DataTable作为参数。
  • 然后用stringbuilder类创建动态的HTML文本。
  • 输出结果与DataGridView中的行和列数量相同。
  • 在HTML中创建列。
foreach (DataColumn myColumn in dt.Columns)  
{  
strHTMLBuilder.Append("<td >");  
strHTMLBuilder.Append(myColumn.ColumnName);  
strHTMLBuilder.Append("</td>");  
  
}  
  • 复制数据,以下代码就会在DataTable中创建相同数量的行,并将数据复制到HTML行中。
foreach (DataRow myRow in dt.Rows)  
{  
  
strHTMLBuilder.Append("<tr >");  
foreach (DataColumn myColumn in dt.Columns)  
{  
strHTMLBuilder.Append("<td >");  
strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString());  
strHTMLBuilder.Append("</td>");  
  
}  
strHTMLBuilder.Append("</tr>");  
}  

 D. 执行上面的代码后得到如下HTML文本

<html >
<head>
</head>
<body>
<table border='1px' cellpadding='1' cellspacing='1' bgcolor='lightyellow' style='font-family:Garamond; font-size:smaller'>
<tr >
<td >ID</td>
<td >NAME</td>
<td >CITY</td>
</tr><tr >
<td >111</td><td >Devesh</td>
<td >Ghaziabad</td></tr>
<tr ><td >222</td><td >ROLI</td>
<td >KANPUR</td></tr><tr >
<td >102</td><td >ROLI</td>
<td >MAINPURI</td></tr><tr >
<td >212</td><td >DEVESH</td>
<td >KANPUR</td></tr></table>
</body>
</html>  

 E. 创建HTML文件

string HtmlBody = ExportDatatableToHtml(table)  
System.IO.File.WriteAllText(@"c:\abc.HTML", HtmlBody);  

 F. 运行结果

目录
相关文章
|
4月前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
4月前
|
C# UED SEO
C# 异步方法async / await任务超时处理
通过使用 `Task.WhenAny`和 `Task.Delay`方法,您可以在C#中有效地实现异步任务的超时处理机制。这种方法允许您在指定时间内等待任务完成,并在任务超时时采取适当的措施,如抛出异常或执行备用操作。希望本文提供的详细解释和代码示例能帮助您在实际项目中更好地处理异步任务超时问题,提升应用程序的可靠性和用户体验。
141 3
|
5月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
1001 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
5月前
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
90 1
|
5月前
|
C#
C#的方法的参数传递
C#的方法的参数传递
54 0
|
5月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
93 0
|
5月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
155 65
|
3月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
132 12
|
4月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
144 4
|
4月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
69 3