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#目录操作示例(获取目录名称 获取子目录)

    下面我来详细讲解一下“c#目录操作示例(获取目录名称 获取子目录)”的完整攻略。 获取目录名称 获取目录名称可以使用Path类中的GetDirectoryName方法。该方法接收一个字符串参数,表示一个文件或目录的路径,返回该路径所在的目录的路径字符串。 示例代码如下: string path = @"C:\Users\Administrator\…

    C# 2023年6月1日
    00
  • C#启动windows服务方法的相关问题分析

    下面是针对”C#启动windows服务方法的相关问题分析”的完整攻略: 1. 了解Windows服务启动方式 在进行C#编程启动Windows服务之前,需要先了解Windows服务启动的几种方式: 自动:随着系统启动而启动。 自动(延迟启动):在系统启动完成后,延迟几个时间单位后启动。 手动:需要手动启动。 禁用:无法启动。 具体启动方式可在控制面板中的“管…

    C# 2023年5月15日
    00
  • ASP.NET Core中的通用主机HostBuilder

    ASP.NET Core中的通用主机HostBuilder是一种用于构建和配置应用程序主机的通用机制。HostBuilder提供了一种简单的方式来配置应用程序的服务、配置和日志记录等方面。下面是ASP.NET Core中的通用主机HostBuilder的完整攻略。 什么是HostBuilder? 在ASP.NET Core中,HostBuilder是一种用于…

    C# 2023年5月16日
    00
  • C#连续任务Task.ContinueWith方法

    下面是关于”C#连续任务Task.ContinueWith方法”的完整攻略。 什么是Task.ContinueWith方法 在C#中,Task.ContinueWith方法用于在一个任务完成后执行一些额外的操作。具体来说,该方法使得一个任务能够与另一个相关的任务链接起来,当前一个任务完成后,可以立即启动与它相关的下一个任务,从而形成一个连续的任务链。 Tas…

    C# 2023年6月6日
    00
  • C#实现公式计算验证码的示例详解

    下面我将详细讲解“C#实现公式计算验证码的示例详解”的完整攻略。 背景介绍 验证码是一种防止机器恶意访问或者提交信息的有效手段。而公式计算验证码则是其中的一种,通过让用户计算简单公式的方式来验证用户身份。下面将介绍如何使用C#来实现公式计算验证码。 步骤说明 步骤一:生成验证码公式 首先,需要生成一个简单的验证码公式,这里以三个随机数字相加为例。代码如下: …

    C# 2023年6月7日
    00
  • AspectCore和MSDI 实现Name注册以及解析对象

    AspectCore 在注册服务这块比较简单,默认是无法根据Name去注册和解析对象,这边做一下这块的扩展 大致原理是根据自定义Name去生成对应的动态类型,然后使用委托或者对象的方式,进行注册 tips:由于底层原理的原因,无法支持Type的方式进行注册   定义好动态类型的接口,以及相关实现 1 public interface INamedServic…

    C# 2023年4月24日
    00
  • 详解C#对Dictionary内容的通用操作

    下面是详解C#对Dictionary内容的通用操作的完整攻略: 1.概述 C#中的Dictionary类允许开发者使用键值对的方式来存储和访问数据,是C#中常用的一种集合类型。开发者可以通过Dictionary类提供的通用操作来对字典的内容进行添加、修改、删除和访问等操作。下面我们将详细说明C#中Dictionary类的通用操作。 2. 通用操作 2.1 添…

    C# 2023年6月1日
    00
  • C#实现倒计时关闭提示框功能

    下面是“C#实现倒计时关闭提示框功能”的完整攻略: 步骤一:创建提示框 在窗体上拖拽一个 Label 控件,设置样式和位置,并将其名称设为 tipsLabel。在窗体加载时使用以下代码显示提示框: tipsLabel.Visible = true; // 显示提示框 步骤二:实现倒计时 定义一个整型变量 countdownTime,并在窗体加载时初始化为需要…

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