C#将html table 导出成excel实例

下面是关于“C#将html table 导出成excel实例”的完整攻略。

1. 环境准备

在使用C#将HTML表格导出为Excel之前,需要确保安装并引用以下两个库:

  • EPPlus :一个用于创建和读取Excel的开源库,可在 Nuget 上查找和安装。
  • HtmlAgilityPack: 一个用于处理HTML文档的开源库,可在 Nuget 上查找和安装。

2. 获取HTML数据源

将 HTML table 数据源读入内存并将其存储为 HtmlDocument 对象。可以使用 HtmlAgilityPack 库来实现它。示例代码如下:

using HtmlAgilityPack;

string htmlContent = @"<table>
                       <tr>
                           <th>Firstname</th>
                           <th>Lastname</th>
                           <th>Age</th>
                       </tr>
                       <tr>
                           <td>Jill</td>
                           <td>Smith</td>
                           <td>50</td>
                       </tr>
                       <tr>
                           <td>Eve</td>
                           <td>Jackson</td>
                           <td>94</td>
                       </tr>
                     </table>";

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);

3. 创建Excel文档并将数据写入它

要将表格数据写入Excel文档,可以使用 EPPlus 库。

首先,我们需要使用 ExcelPackage 类创建一个 Excel 文件,然后用 ExcelWorksheet 类从中获取一个工作表对象。接下来,我们使用 HtmlDocument 对象中的数据来填充表格。示例代码如下:

using OfficeOpenXml;

var package = new ExcelPackage();
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
var tableNode = htmlDoc.DocumentNode.SelectSingleNode("//table");

int row = 1;
int column = 1;
foreach (var rowNode in tableNode.SelectNodes("tr"))
{
    foreach (var cellNode in rowNode.SelectNodes("th|td"))
    {
        worksheet.Cells[row, column].Value = cellNode.InnerText;
        column++;
    }
    column = 1; // 列数重置
    row++;
}

//设置单元格宽度
worksheet.Cells.AutoFitColumns();

4. 保存Excel文件

完成Excel填写后,使用 SaveAs 方法将其保存到磁盘上。示例代码如下:

string fileName = @"c:\Temp\test.xlsx";
package.SaveAs(new FileInfo(fileName));

5. 完整示例代码

using System.IO;
using HtmlAgilityPack;
using OfficeOpenXml;

namespace HtmlTableToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // HTML 数据源
            string htmlContent = @"<table>
                                   <tr>
                                       <th>Firstname</th>
                                       <th>Lastname</th>
                                       <th>Age</th>
                                   </tr>
                                   <tr>
                                       <td>Jill</td>
                                       <td>Smith</td>
                                       <td>50</td>
                                   </tr>
                                   <tr>
                                       <td>Eve</td>
                                       <td>Jackson</td>
                                       <td>94</td>
                                   </tr>
                                 </table>";

            // 将 HTML 数据源读入内存中的 HtmlDocument
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);

            // 创建 Excel 文档并填充数据
            var package = new ExcelPackage();
            var worksheet = package.Workbook.Worksheets.Add("Sheet1");
            var tableNode = htmlDoc.DocumentNode.SelectSingleNode("//table");

            int row = 1;
            int column = 1;
            foreach (var rowNode in tableNode.SelectNodes("tr"))
            {
                foreach (var cellNode in rowNode.SelectNodes("th|td"))
                {
                    worksheet.Cells[row, column].Value = cellNode.InnerText;
                    column++;
                }
                column = 1; // 列数重置
                row++;
            }

            // 设置单元格宽度
            worksheet.Cells.AutoFitColumns();

            // 保存 Excel 文件
            string fileName = @"c:\Temp\test.xlsx";
            package.SaveAs(new FileInfo(fileName));
        }
    }
}

以上就是使用 C# 将 HTML 表格导出为 Excel 的全部过程和示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#将html table 导出成excel实例 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • C#对象为Null模式(Null Object Pattern)实例教程

    C#对象为Null模式(Null Object Pattern)实例教程 介绍 在C#中,经常需要处理对象是否为null的情况。在编写代码时,我们通常会使用”if(null)”这样的条件语句进行处理。然而,这种处理方式复杂度较高,容易出错。通过Null Object Pattern模式,我们可以将对象的null值进行抽象化,简化代码编写。 实现 方案一:使用…

    C# 2023年5月31日
    00
  • C#(int)中Convert、Parse、TryParse的区别

    区别:Convert、Parse、TryParse都是将字符串转换为数字类型的方法,但它们的使用场景和实现方式略有不同: Convert Convert是.NET Framework中的一个通用类型转换方法,可以将一个值从一种数据类型转换为另一种数据类型。其中,Convert.ToInt32(string)可以将字符串转换为32位带符号整数类型(int)。 …

    C# 2023年5月15日
    00
  • .NET Core自定义配置文件

    在本攻略中,我们将详细讲解.NET Core自定义配置文件的实现方法,并提供两个示例说明。 创建配置文件:首先,我们需要创建一个配置文件。我们可以使用JSON、XML或INI等格式来创建配置文件。例如,我们可以创建一个名为appsettings.json的JSON格式的配置文件,内容如下: { "MyConfig": { "Na…

    C# 2023年5月16日
    00
  • C#中ArrayList 类的使用详解

    C#中ArrayList 类的使用详解 简介 在C#中,ArrayList类是一个动态数组。它与普通数组使用方法相似,但是具有更高的灵活性。在ArrayList中,可以添加、删除和插入元素,而且不需要预定义数组大小。 ArrayList类与其他集合类(如List、Dictionary等)相比,具有一些缺点。因为ArrayList是一个对象数组,因此它不适用于…

    C# 2023年6月6日
    00
  • .NET Core/Framework如何创建委托大幅度提高反射调用的性能详解

    .NET Core/Framework如何创建委托大幅度提高反射调用的性能详解 在.NET Core/Framework中,反射调用是一种非常常见的技术,但是反射调用的性能通常比直接调用方法要低。为了提高反射调用的性能,我们可以使用委托来代替反射调用。在本文中,我们将详细讲解如何使用委托来提高反射调用的性能。 反射调用的性能问题 在.NET Core/Fra…

    C# 2023年5月16日
    00
  • C#对文件名智能排序的算法

    请听我讲解C#对文件名智能排序算法。 什么是文件名智能排序? 在计算机中,我们常常需要对文件进行排序操作。例如,我们可能通过文件名对某个文件夹中的所有文件进行排序。在Windows系统中,默认情况下,对文件名进行排序是按照每个字符的ASCII码进行排序的。这种排序方式通常不太符合人类对文件名的排序需求。因此,为了让文件名排序更符合人类的直觉,C#引入了文件名…

    C# 2023年6月1日
    00
  • C#词法分析器之输入缓冲和代码定位的应用分析

    C#词法分析器之输入缓冲和代码定位的应用分析 简介 在编写一个词法分析器时,输入缓冲和代码定位是两个非常重要的问题。输入缓冲指的是需要读取源程序文件并将其存入内存中的区域,而代码定位则指的是要对源码进行定位,以帮助程序识别代码中的各个要素。 在C#语言中,可以使用StreamReader来帮助读取源文件,并使用FileStream来存储源文件。另外,在C#中…

    C# 2023年6月6日
    00
  • C#使用iCSharpcode进行文件压缩实现方法

    下面是“C#使用iCSharpcode进行文件压缩实现方法”的完整攻略。 1. 引入iCSharpcode.SharpZipLib库 在C#中使用iCSharpcode进行文件压缩需要引入其提供的SharpZipLib库。可以通过NuGet来引入,也可以直接下载安装至本地项目中。 2. 使用ZipOutputStream进行文件压缩 压缩一个文件可以使用如下…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部