跳至页脚内容
使用 IRONXL

如何使用 C# 将 HTML 表格导出到 Excel

本指南演示如何使用 IronXL 和 HTML Agility Pack 在 C# 中将 HTML 表格数据导出到 Excel 文件,为对合规性至关重要的应用程序提供企业级的解析、格式化和数据完整性控制,而无需依赖 Office。

在商业应用中,无论是数据迁移、报表生成还是需要进一步分析的网页,提取 HTML 表格数据并将其转换为 Excel 表格都是一个常见的需求。 本文提供了从HTML到Excel格式导出数据表内容的简单步骤。 虽然一些库提供内置的方法来转换HTML表格,但这些方法通常在文件格式或支持的功能上存在限制。

当您需要在 C# 中将 HTML 表格导出到 Excel 时,了解 Excel 工作表结构和 HTML 表格之间的关系至关重要。 本指南演示如何高效地将数据从 HTML 表格转换为 Excel 格式,创建保持数据完整性的专业 Excel 工作表输出。

IronXL提供了一种更灵活的方式将 HTML 表格内容转换为 Excel 工作表,它将强大的Excel 操作功能与 HTML 解析相结合,以 C# 导出 HTML 表格数据。 无论您需要从 URL 下载数据还是处理数据库中的内容,该解决方案都能处理各种输入场景,同时保持企业安全标准

为什么选择IronXL来导出HTML表格数据?

IronXL为何适合企业环境?

IronXL擅长创建和操作Excel文件而无需安装Microsoft Office,这使其成为服务器环境和跨平台应用程序的理想选择。 该库支持部署到 AzureAWS Lambda 函数Docker 容器,确保与现代云架构兼容。 IronXL 与强大的 HTML 文件和内容解析器HTML Agility Pack配合使用时,就成为将任何 HTML 表格结构转换为 Excel 表格数据的多功能解决方案。 这种方法可以与.NET 应用程序无缝协作,并通过优化的性能特性高效地处理大型数据集。

对于需要严格遵守规定的企业环境,IronXL 提供全面的安全文档,并支持密码保护的工作簿加密的工作表。 该库还可以在Linux 服务器macOS 系统上无缝运行,提供真正的跨平台兼容性,这对于多样化的企业基础架构至关重要。

IronXL 与其他 Excel 库相比如何?

与 Syncfusion Excel 库的 XlsIO 等库不同,后者提供的ImportHtmlTable函数仅限于特定的 HTML 格式和表格结构,IronXL 的方法使开发人员能够完全控制解析和转换过程。 这种灵活性意味着开发人员可以处理复杂的场景,例如嵌套表自定义数据格式和选择性列提取,而这些是僵化的内置方法无法实现的。 默认设置适用于大多数使用场景,但您可以自定义每个细节,包括单元格字体和大小背景图案和颜色以及边框对齐方式

IronXL丰富的 API 参考为开发人员提供了对 Excel 操作各个方面的精细控制,从条件格式设置图表创建。 这种控制水平在处理需要特定格式以满足监管合规性或公司标准的企业数据时尤为重要。

IronXL 提供哪些高级功能?

此外,IronXL 还提供全面的 Excel 功能,包括公式支持单元格样式多工作表管理以及各种导出格式(XLSX、XLS、 JSON和 CSV 文件)。 该库支持求和、平均值、最小值和最大值等数学函数,可以直接在生成的 Excel 文件中进行复杂的计算。 您甚至可以创建图表导出为 PDF以及管理隐藏字段数据,使其成为满足 Excel 自动化需求的完整解决方案,而不仅仅是简单的 HTML 表格转换。 无论是处理DataTable 对象还是电子表格文件,IronXL 都能无缝地处理转换。

对于企业报表需求,IronXL 支持命名范围以提高公式可读性,冻结窗格以更好地进行数据导航,以及分组/取消分组功能以组织复杂的数据结构。 该库还提供自动调整大小功能,以确保所有内容都能正确显示。

如何设置所需的库?

需要哪些 NuGet 包?

首先,通过NuGet包管理器安装IronXL和HTML Agility Pack。 IronXL 提供免费试用版,供用户测试所有功能,并为企业部署提供详细的许可文档

Install-Package IronXL.Excel
Install-Package HtmlAgilityPack
Install-Package IronXL.Excel
Install-Package HtmlAgilityPack
SHELL

对于企业环境,您可以在 Web.config 中配置许可证密钥,或者使用许可 API以编程方式应用它。 该库支持各种部署场景,包括ASP.NET Web 应用程序Blazor 服务器端应用程序

我应该导入哪些命名空间?

这些 NuGet 包允许您以编程方式创建加载保存Excel 文档。 然后将必要的using语句导入您的C#代码文件:

using IronXL;
using HtmlAgilityPack;
using System;
using System.Linq;
using IronXL;
using HtmlAgilityPack;
using System;
using System.Linq;
$vbLabelText   $csharpLabel

这些库可以无缝协作,HTML Agility Pack 负责 HTML 解析,而 IronXL 负责Excel 文件的创建和操作。 本示例演示了一种将 HTML 表格转换为XLSX 格式的简单方法。 对于VB.NET 开发人员来说,只需稍作语法调整即可实现类似的功能。

如何使用HTML Agility Pack解析HTML表格数据?

提取HTML表格内容的基本方法是什么?

HTML Agility Pack提供了一种简单的方法,通过XPath表达式导航HTML文档。 以下代码展示了如何使用IronXL 的数据导入功能从 HTML 表格中提取数据并准备导出:

// Sample HTML table with product data
string htmlContent = @"
<table>
    <thead>
        <tr>
            <th>Product</th>
            <th>Price</th>
            <th>Stock</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Laptop</td>
            <td>$999</td>
            <td>15</td>
        </tr>
        <tr>
            <td>Mouse</td>
            <td>$25</td>
            <td>50</td>
        </tr>
        <tr>
            <td>Keyboard</td>
            <td>$75</td>
            <td>30</td>
        </tr>
    </tbody>
</table>";
// Load HTML document for parsing
var doc = new HtmlDocument();
doc.LoadHtml(htmlContent);
// Select the HTML table element using XPath
var table = doc.DocumentNode.SelectSingleNode("//table");
// Sample HTML table with product data
string htmlContent = @"
<table>
    <thead>
        <tr>
            <th>Product</th>
            <th>Price</th>
            <th>Stock</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Laptop</td>
            <td>$999</td>
            <td>15</td>
        </tr>
        <tr>
            <td>Mouse</td>
            <td>$25</td>
            <td>50</td>
        </tr>
        <tr>
            <td>Keyboard</td>
            <td>$75</td>
            <td>30</td>
        </tr>
    </tbody>
</table>";
// Load HTML document for parsing
var doc = new HtmlDocument();
doc.LoadHtml(htmlContent);
// Select the HTML table element using XPath
var table = doc.DocumentNode.SelectSingleNode("//table");
$vbLabelText   $csharpLabel

这种解析方法适用于各种 HTML 源,无论是来自网络抓取、数据库导出还是动态生成的内容。 提取的数据可以使用 IronXL 的数据处理功能进行进一步处理,然后再导出。

XPath 如何用于表格元素选择?

这段代码将 HTML 内容加载到HtmlDocument对象中,并使用 XPath查询和选择表格元素。 SelectSingleNode方法返回 HTML 中找到的第一个表格,方便在存在多个表格时精准定位特定表格。该方法会处理表格的每一行,提取单元格值进行转换,类似于 IronXL 处理 Excel 数据时的范围选择方式。

对于涉及合并单元格重复行和列的更复杂场景,可能需要额外的解析逻辑来在转换过程中保持正确的结构。

如何使用IronXL导出解析的数据到Excel?

什么代码可以将HTML表格数据转换为Excel格式?

使用IronXL,我们可以轻松地将解析的HTML表格数据转换为具有适当格式的专业Excel电子表格。 以下代码演示了如何使用自定义字体大小和字体系列设置导出数据:

// Create a new Excel workbook
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Exported Data");
// Extract and write headers
var headers = table.SelectNodes(".//thead/tr/th");
if (headers != null)
{
    for (int col = 0; col < headers.Count; col++)
    {
        workSheet.SetCellValue(0, col, headers[col].InnerText.Trim());
        // Apply header formatting
        var headerCell = workSheet.GetCellAt(0, col);
        headerCell.Style.Font.Bold = true;
        headerCell.Style.BackgroundColor = "#4CAF50";
    }
}
// Extract and write data rows
var rows = table.SelectNodes(".//tbody/tr");
if (rows != null)
{
    for (int row = 0; row < rows.Count; row++)
    {
        var cells = rows[row].SelectNodes("td");
        if (cells != null)
        {
            for (int col = 0; col < cells.Count; col++)
            {
                string cellValue = cells[col].InnerText.Trim();
                workSheet.SetCellValue(row + 1, col, cellValue);
            }
        }
    }
}
// Auto-fit columns for better readability
for (int col = 0; col < headers?.Count; col++)
{
    workSheet.AutoSizeColumn(col);
}
// Save the Excel file
workBook.SaveAs("ExportedTable.xlsx");
// Create a new Excel workbook
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.CreateWorkSheet("Exported Data");
// Extract and write headers
var headers = table.SelectNodes(".//thead/tr/th");
if (headers != null)
{
    for (int col = 0; col < headers.Count; col++)
    {
        workSheet.SetCellValue(0, col, headers[col].InnerText.Trim());
        // Apply header formatting
        var headerCell = workSheet.GetCellAt(0, col);
        headerCell.Style.Font.Bold = true;
        headerCell.Style.BackgroundColor = "#4CAF50";
    }
}
// Extract and write data rows
var rows = table.SelectNodes(".//tbody/tr");
if (rows != null)
{
    for (int row = 0; row < rows.Count; row++)
    {
        var cells = rows[row].SelectNodes("td");
        if (cells != null)
        {
            for (int col = 0; col < cells.Count; col++)
            {
                string cellValue = cells[col].InnerText.Trim();
                workSheet.SetCellValue(row + 1, col, cellValue);
            }
        }
    }
}
// Auto-fit columns for better readability
for (int col = 0; col < headers?.Count; col++)
{
    workSheet.AutoSizeColumn(col);
}
// Save the Excel file
workBook.SaveAs("ExportedTable.xlsx");
$vbLabelText   $csharpLabel

可以通过添加数字格式单元格注释超链接等其他格式选项来增强此代码,从而创建更复杂的 Excel 输出。 对于大型数据集,请考虑使用IronXL 的性能优化功能来处理文件大小限制

Excel API 结构如何运作?

此代码演示了 IronXL 的直观的C# Excel 操作API。 首先,它创建一个新的工作簿和工作表。 然后它遍历已解析的 HTML 表格标题,将它们放置在第一行,同时应用粗体格式和绿色背景色。 HTML表格中的数据行以类似的方式处理,每个单元格的文本内容被提取并放置在相应的Excel单元格中。 AutoSizeColumn函数确保所有内容都可见,最后,将工作簿保存为 XLSX 文件。 您可以轻松下载生成的文件,或将其存储在数据库中以便日后检索。

对于需要审计跟踪的企业场景,您可以添加工作簿元数据,例如作者信息、创建日期和文档属性。 该库还支持打印设置配置,用于生成可直接打印的报告。

如何在C#中将HTML表导出到Excel文件:图1 - IronXL解析的表格数据输出

最终输出是什么样的? 这里可以看到原始 HTML 表格与上述输出的对比,展示了 IronXL 如何在提供专业格式选项的同时保持数据完整性: ![如何在C#中将HTML表导出到Excel文件:图2 - 解析的Excel数据与原始HTML表格对比](/static-assets/excel/blog/convert-html-table-to-excel-csharp/convert-html-table-to-excel-csharp-2.webp) ## 如何处理常见的出口场景? ### 如何导出多个HTML表格? 当处理多个表格时,只需使用`SelectNodes` ("//table") 获取所有表格并遍历它们,为每个表格创建[单独的工作表](/csharp/excel/examples/copy-an-excel-worksheet/)。 本示例展示了如何使用[工作表管理技术](/csharp/excel/how-to/manage-worksheet/)处理包含大型数据集的复杂场景: ```cs var tables = doc.DocumentNode.SelectNodes("//table"); foreach (var tbl in tables) { // Create new worksheet for each table WorkSheet ws = workBook.CreateWorkSheet($"Table_{tables.IndexOf(tbl) + 1}"); // Process table as shown above } ``` 对于更高级的场景,您可以[合并多个 Excel 区域](/csharp/excel/examples/combine-excel-ranges/)、实施[数据验证](/csharp/excel/troubleshooting/excel-limitation-data-validation-for-string-lists/)或添加[条件格式规则](/csharp/excel/examples/excel-conditional-formatting/)来突出显示重要的数据模式。 ### 我应该实现怎样的错误处理? 为了错误处理,将解析逻辑包在try-catch块中,以优雅地处理格式错误的HTML。 IronXL 会自动处理数据类型检测,并在适当的时候使用其[内置的转换功能](/csharp/excel/how-to/write-excel-net/)将数字字符串转换为数字。 对于涉及动态内容的更复杂场景,开发人员通常将此方法与[Selenium WebDriver](https://www.selenium.dev/)等工具结合使用,以处理JavaScript渲染的表格。 在处理[CSV 文件](/csharp/excel/how-to/csharp-read-csv-file/)或[TSV 数据](/csharp/excel/how-to/load-spreadsheet/)时,IronXL 提供了专门的方法来处理基于分隔符的格式。 该库还支持[不同电子表格格式之间的转换](/csharp/excel/examples/convert-excel-spreadsheet/),方便导出为不同系统所需的格式。 ### 如何处理特殊数据需求? 在处理来自 URL 或数据库查询的内容以进行进一步分析时,您可能需要处理其他细节,例如隐藏字段值或特殊格式要求。 默认行为对于标准表格效果很好,但您可以使用[IronXL 的样式 API](/csharp/excel/how-to/cell-font-size/)根据需要为每一列或任何特定的表格行自定义字体大小、字体系列和其他样式属性。 对于需要[排序](/csharp/excel/examples/sort-excel-range-csharp/)或[修剪的](/csharp/excel/how-to/trim-cell-range/)数据,IronXL 提供了内置方法,可以在最终导出之前清理和整理数据。 您还可以根据解析要求动态[添加行和列](/csharp/excel/how-to/add-rows-columns/),或者在处理过程中根据需要[插入新的行和列](/csharp/excel/examples/insert-new-rows-and-columns/)。 企业应用程序经常需要[导出为不同的格式](/csharp/excel/examples/export-excel-spreadsheet/),例如[转换为 HTML](/csharp/excel/examples/convert-excel-to-html/)以便在 Web 上显示,或者通过[DataTable 转换](/csharp/excel/examples/excel-sql-datatable/)[与 SQL 数据库集成](/csharp/excel/examples/excel-sql-dataset/)。 IronXL 通过专门的方法和[全面的文档](/csharp/excel/docs/)支持所有这些场景。 ## 该方案的主要优势是什么? IronXL和HTML Agility Pack的组合为将HTML表格导出到C#中的Excel提供了一种强大、灵活的解决方案。 本文演示了将 HTML 内容转换为 XLSX 格式、导出数据表信息以及创建专业电子表格文件的简单步骤。 这种方法比僵硬的内置方法提供了更多的控制,允许开发人员处理复杂的HTML结构,同时利用IronXL全面的Excel功能。 对于企业部署,IronXL 提供[详细的安全文档](/csharp/excel/troubleshooting/ironxl-security-cve/)、[灵活的许可选项](/csharp/excel/licensing/)以及对[许可证扩展](/csharp/excel/licensing/extensions/)和[升级的](/csharp/excel/licensing/upgrades/)支持。 该库的[变更日志](/csharp/excel/product-updates/changelog/)表明其性能和功能不断改进,从而确保其在企业项目中的长期可行性。 无论您是构建网络爬虫、从数据库迁移遗留数据、使用[图表](/csharp/excel/how-to/csharp-excel-chart-create-edit-tutorial/)自动生成报告,还是对大型数据集执行数据分析,此解决方案均可扩展以满足企业需求。 提供的代码示例展示了如何处理各种输入源,从静态 HTML 到通过 URL 获取的动态内容。 您可以轻松地将结果导出到[.NET MAUI 应用程序](/csharp/excel/get-started/read-create-excel-net-maui/)或传统桌面解决方案中进行下载或进一步处理。 对于需要高级 Excel 功能的组织,IronXL 支持[聚合函数](/csharp/excel/examples/aggregate-excel-functions/)、 [C# 中的 Excel 公式](/csharp/excel/examples/excel-formulas-csharp/),甚至可以[直接从 Excel 更新数据库记录](/csharp/excel/examples/excel-update-database-records/)。 该库[保护 Excel 文件](/csharp/excel/examples/protect-excel-file/)的能力确保了整个导出过程中的数据安全。 准备好将您的 HTML 数据转换为专业的 Excel 表格文件了吗? [立即开始免费试用](trial-license)IronXL,体验无需Office依赖的编程Excel操作的灵活性。 对于生产部署,[探索我们的许可选项](licensing),起价为$799。 访问我们的[综合教程](/csharp/excel/tutorials/how-to-read-excel-file-csharp/),了解更多高级Excel自动化技巧。

常见问题解答

使用IronXL将HTML表格转换为Excel的主要优点是什么?

IronXL允许您以灵活的方法轻松将HTML表格数据转换为Excel电子表格,无需Microsoft Office,从而实现跨平台兼容性。

IronXL能否在转换为Excel时处理复杂的HTML表格结构?

是的,IronXL被设计为能够管理复杂的HTML表格结构,从而确保数据准确导出到Excel,同时保持原来的布局和格式。

是否可以在C#中使用IronXL自动化将HTML表格转换为Excel?

当然,IronXL支持自动化,允许开发人员在C#应用程序中以编程方式将HTML表格转换为Excel工作表,从而简化数据处理工作流程。

使用IronXL将HTML表格转换为Excel支持不同的文件格式吗?

IronXL支持多种Excel文件格式,包括XLSX、XLS和CSV,提供在选择最适合应用程序需求的输出格式时的灵活性。

我需要安装Microsoft Office才能使用IronXL进行HTML到Excel转换吗?

不,IronXL不需要安装Microsoft Office,提供了一种轻量的解决方案,能够在不同平台上将HTML表格转换为Excel。

使用IronXL将HTML表格转换为Excel的典型用例是什么?

常见用例包括数据迁移、报告生成和网页数据的进一步分析,其中将HTML表格内容导出到Excel对于业务应用程序是必要的。

IronXL与其他HTML到Excel转换库相比如何?

虽然一些库可能提供HTML到Excel转换的内置方法,但IronXL通过提供不受其他解决方案中常见限制影响的广泛功能而脱颖而出,例如受限的文件格式支持。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。