C#将html table 导出成excel实例

yizhihongxing

下面是关于“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# 如何实现Token

    C# 实现 Token 的攻略可以分为以下几步: 1.定义 Token 模型:需要定义 Token 的相关信息,例如 Token 的值、生成时间、过期时间等。具体示例如下: public class TokenModel { public string Token { get; set; } public DateTime GenerateTime { ge…

    C# 2023年5月31日
    00
  • C#中数组初始化与数组元素复制的方法

    C#中数组初始化与数组元素复制的方法主要有以下几种: 一、使用数组初始化语法 数组初始化语法在C# 3.0中引入,允许我们在声明数组时使用大括号来初始化数组元素,语法格式如下: type[] arrayName = {element1, element2, element3, …, elementN}; 其中,type为数组元素类型,arrayName为…

    C# 2023年6月7日
    00
  • C#中ZipHelper 压缩和解压帮助类

    下面我将为您详细讲解“C#中ZipHelper压缩和解压帮助类”的完整攻略。 1. 概述 ZipHelper是一个C#开发的压缩和解压缩帮助类,使用简单方便,目前已经被广泛应用。下面介绍ZipHelper的基本使用方法及示例。 2. 安装 要使用ZipHelper,需要下载NuGet包“ICSharpCode.SharpZipLib”。可以通过NuGet P…

    C# 2023年5月15日
    00
  • asp.net下Cache 缓存操作类代码

    下面是“asp.net下Cache 缓存操作类代码”的完整攻略。 一、Cache 缓存操作类简介 在 ASP.NET 中, Cache 缓存是一个非常有用的功能,它能够快速地提高网页的访问速度、降低服务器负载、提高用户体验。Cache 缓存是一个键值对的数据结构,用来存储经常使用的数据,以便快速访问。缓存在内存中,因此访问速度非常快。 向 Cache 缓存中…

    C# 2023年5月31日
    00
  • C# 关于AppDomain的一些总结

    关于C#中的AppDomain,我来进行详细的说明和总结。 一、什么是AppDomain 在C#中,每个线程都属于一个应用程序域(AppDomain)。AppDomain是.NET中用于进程隔离的一种技术,可以将应用程序分隔为不同的域,从而提高了程序的安全性和稳定性。 AppDomain可以看作是CLR(公共语言运行库)中的一个隔离容器,它可以加载和执行单独…

    C# 2023年5月14日
    00
  • C# char类型字符转换大小写的实现代码

    下面是详细的讲解“C# char类型字符转换大小写的实现代码”的完整攻略。 问题说明 在 C#中,char 类型表示一个 Unicode 字符。有时候我们需要将字符转换为大写或小写形式。C# 语言提供了相应的方法供我们实现。 解决方案 C# 中,char 类型本身包含了 ToUpper 和 ToLower 两个方法,分别用于将字符转换为大写和小写形式。使用这…

    C# 2023年6月1日
    00
  • python简单线程和协程学习心得(分享)

    Python简单线程和协程学习心得 线程和协程的区别 线程是操作系统的调度单位,是由操作系统来进行线程调度,每个线程拥有自己的内存空间,一个线程会包含多个任务的处理过程,可以实现同时执行多个任务的效果。 而协程则是在用户程序中自行切换的,每个协程之间并不存在系统线程之间的上下文切换开销,协程是一种轻量级的线程,可以在同一个线程中运行,不会让操作系统进行线程上…

    C# 2023年6月6日
    00
  • C# 通过 inline-asm 解决嵌入x86汇编

    首先,C# 通过 inline-asm 解决嵌入x86汇编,需要使用 __asm 关键字,在 C# 程序中编写 inline 汇编代码。 例如,下面是一个使用 inline-asm 在 C# 程序中调用 x86 汇编代码的示例: unsafe public static void InlineAsmTest() { int result = 0; // 内联…

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