跳過到頁腳內容
使用 IRONXL

如何在 C# 中將 HTML 表格匯出為 Excel 文件

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

当您需要将HTML表格导出到excel时,了解excel工作表结构与HTML表格之间的关系至关重要。 本指南演示了如何有效地将数据从HTML表格转移到excel格式,创建保持数据完整性的专业excel工作表输出。

IronXL提供了一种更灵活的方法,将HTML表格内容转换为Excel工作表,将其强大的Excel操作能力与HTML解析相结合,实现C#中将HTML表格导出到Excel。 无论您是需要从URL下载数据还是处理数据库内容,此解决方案可以处理各种输入场景。

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

IronXL excels at creating and manipulating Excel文件时不需要安装Microsoft Office,使其成为服务器环境和跨平台应用程序的理想选择。 与HTML Agility Pack配对时,一个强大的HTML文件和内容解析器,IronXL成为将任何HTML表格结构转换为excel表格数据的多功能解决方案。 此方法无缝支持.NET应用程序,并能高效处理大数据集。

与Syncfusion Excel库的XlsIO这样的库不同,后者的ImportHtmlTable功能仅限于特定的HTML格式和表格结构,IronXL的方法为开发者提供了对解析和转换过程的完整控制。 这种灵活性意味着开发者可以处理复杂场景,如嵌套表、自定义数据格式和选择性列提取,这是相对死板的内置方法无法适应的。 默认设置适用于大多数用例,但您可以自定义每个细节。

Additionally, IronXL provides comprehensive Excel features including formula support, cell styling, multiple worksheet management, and various export formats (XLSX, XLS, JSON, and CSV file). 您甚至可以创建图表、导出为pdf并管理隐藏字段数据,使其成为满足超出简单HTML表格转换之外的Excel自动化需求的完整解决方案。 无论是处理dataable对象还是电子表格文件,IronXL都能无缝处理转换。

如何设置所需的库?

首先,通过NuGet包管理器安装IronXL和HTML Agility Pack。 IronXL提供免费试用来测试所有功能:

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

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

using IronXL;
using HtmlAgilityPack;
using System;
using System.Linq;
using IronXL;
using HtmlAgilityPack;
using System;
using System.Linq;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这些库无缝协作,HTML Agility Pack处理HTML解析,而IronXL负责Excel文件的创建和操作。 此示例演示了一种将HTML表格转换为xlsx格式的简单方法。

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

HTML Agility Pack提供了一种使用XPath表达式导航HTML文档的简单方法。 以下代码展示了如何从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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

该代码将HTML内容加载到一个HtmlDocument对象中,并使用XPath查询和选择表格元素。 SelectSingleNode方法返回HTML中找到的第一个表格,使其在多个存在时易于定位特定表格。每个表格行都被处理以提取单元格值进行转换。

如何使用IronXL将解析的数据导出到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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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

在这里,您可以看到原始HTML表格与上面输出的比较:

如何在C#中将HTML表格导出到Excel文件:图2 - 解析的Excel数据与原始HTML表格

处理常见场景

当处理多个表格时,只需使用SelectNodes("//table")来获取所有表格并遍历它们,为每个表格创建单独的工作表。 此示例展示了如何处理复杂场景中的大数据集:

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
}
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
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

为了处理错误,将解析逻辑包装在try-catch块中,以优雅地处理格式不良的HTML。 IronXL自动处理数据类型检测,在适当时将数字字符串转换为数字。 对于涉及动态内容的更复杂场景,开发者通常将这种方法与Selenium WebDriver等工具结合使用,以支持JavaScript呈现的表格。

当从URL或数据库查询生成的数据进行进一步分析时,您可能需要处理附加细节,如隐藏字段值或特殊格式要求。 默认行为适用于标准表格,但您可以根据需要自定义字体大小、字体系列和其他样式属性以适应每个第一列或任何特定表格行。

結論

IronXL和HTML Agility Pack的结合提供了一个强大、灵活的解决方案,用于在C#中将HTML表格导出到Excel。 本文展示了将HTML内容转换为xlsx格式、导出数据表信息及创建专业电子表格文件的简单步骤。 这种方法提供了比相对死板的内置方法更多的控制,使开发者能够处理复杂的HTML结构,同时利用IronXL全面的Excel功能。

无论您是在构建网页爬虫、从数据库迁移旧数据、使用图表自动生成报告,还是对大数据集进行数据分析,这一解决方案都能扩展以满足企业需求。 提供的代码示例展示了如何处理各种输入源,从静态HTML到通过URL检索的动态内容。 您可以轻松导出结果进行下载或在.NET应用程序中进一步处理。

您准备好将您的HTML数据转换为专业的excel工作表文件了吗? 现在开始免费试用IronXL,体验无Office依赖的编程Excel操作的灵活性。 对于生产部署,探索我们的许可选项,起价$799。

常見問題解答

使用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以無限制的廣泛功能脫穎而出,不會如其他方案那樣受到其他限制。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。