跳至頁尾內容
USING IRONXL

如何使用 C# 將 HTML 表格匯出到 Excel

本指南展示了如何使用IronXL和HTML Agility Pack在C#中將HTML表格資料導出到Excel文件,為合規要求嚴格的應用提供企業級的解析、格式化和資料完整性控制,無需依賴Office。

提取HTML表格資料並將其轉換為Excel表單是業務應用中的常見需求,無論是資料遷移、報告生成,還是需要進一步分析的網頁。 本文提供了將datatable內容從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 FunctionsDocker容器,確保與現代雲架構的相容性。 當與HTML Agility Pack搭配使用時,IronXL成為一種多功能解決方案,可以將任何HTML表格結構轉換為Excel表單資料。 此方法與.NET應用完美結合,並通過優化性能功能高效處理大資料集。

對於需要嚴格合規的企業環境,IronXL提供全面的安全文件並支持密碼保護的工作簿加密的工作表。 該程式庫還可以在Linux伺服器macOS系統上無縫運行,提供真正的跨平台相容性,這對多樣化的企業基礎設施至關重要。

IronXL與其他Excel程式庫相比如何?

與Syncfusion Excel程式庫的XlsIO等程式庫不同,IronXL方法讓開發者對解析和轉換過程有完全的控制權,特別是當某些函式受到特定HTML格式和表格結構的限制時。 這種靈活性意味著開發者可以處理如巢狀表格自定義資料格式和選擇性列提取等複雜場景,而固定內建方法無法滿足。 預設設置適用於大多數使用情況,但您可以自定義包括單元格字體和大小背景樣式和顏色以及邊框對齊在內的每一個細節。

IronXL的廣泛API參考為開發者提供了對Excel操作中的每個方面的細粒度控制,從條件格式化圖表建立。 這一控制級別在需要為法規合規或企業標準提供特定格式的企業資料時特別有價值。

IronXL提供了哪些高級功能?

此外,IronXL提供全面的Excel功能,包括公式支持單元格樣式多工作表管理和各種導出格式(XLSX、XLS、JSON和CSV文件)。 該程式庫支持數學函式如求和、平均值、最小值和最大值,允許在生成的Excel文件中直接進行複雜計算。 您甚至可以建立圖表導出為PDF,以及管理隱藏的字段資料,使其成為超越簡單HTML表格轉換的完整Excel自動化解決方案。 無論是使用DataTable物件還是電子表格文件,IronXL都能無縫地處理轉換。

對於企業報告需求,IronXL支持命名範圍以提高公式的可讀性,凍結窗格以便於資料導航,並且提供了分組/取消分組功能以組織複雜的資料結構。 該程式庫還提供自動調整大小功能以確保所有內容正確顯示。

如何設置所需程式庫?

需要哪些NuGet包?

首先,通過NuGet Package Manager安裝IronXL和HTML Agility Pack。 IronXL提供免費試用以測試所有功能,並為企業部署提供詳細的授權文件

:ProductInstall Install-Package -Name IronXL.Excel, HtmlAgilityPack
:ProductInstall Install-Package -Name IronXL.Excel, HtmlAgilityPack
SHELL

對於企業環境,您可以在Web.config中配置授權金鑰,或通過授權API以程式化方式應用。 該程式庫支持各種部署場景,包括ASP.NET 網頁應用Blazor 伺服器端應用

我應該導入哪些命名空間?

這些NuGet包允許您以程式化方式建立載入保存Excel文件。 然後將必要的using語句導入您的C#程式碼文件中:

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

這些程式庫無縫協同工作,HTML Agility Pack負責HTML解析,而IronXL管理Excel文件建立和操作。 此範例展示了將HTML表格轉換為XLSX格式的簡便方法。 對於VB.NET開發人員,相似的功能可以通過小的語法調整實現。

如何使用HTML Agility Pack解析HTML表格資料?

提取HTML表格內容的基本方法是什麼?

HTML Agility Pack提供了一種使用XPath表達式導覽HTML文件的簡便方法。 以下程式碼顯示了如何從HTML表格中提取資料並使用IronXL的資料導入功能準備導出:

// 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");
' Sample HTML table with product data
Dim htmlContent As String = "
<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
Dim doc As New HtmlDocument()
doc.LoadHtml(htmlContent)

' Select the HTML table element using XPath
Dim 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");
Imports System

' Create a new Excel workbook
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Exported Data")

' Extract and write headers
Dim headers = table.SelectNodes(".//thead/tr/th")
If headers IsNot Nothing Then
    For col As Integer = 0 To headers.Count - 1
        workSheet.SetCellValue(0, col, headers(col).InnerText.Trim())
        ' Apply header formatting
        Dim headerCell = workSheet.GetCellAt(0, col)
        headerCell.Style.Font.Bold = True
        headerCell.Style.BackgroundColor = "#4CAF50"
    Next
End If

' Extract and write data rows
Dim rows = table.SelectNodes(".//tbody/tr")
If rows IsNot Nothing Then
    For row As Integer = 0 To rows.Count - 1
        Dim cells = rows(row).SelectNodes("td")
        If cells IsNot Nothing Then
            For col As Integer = 0 To cells.Count - 1
                Dim cellValue As String = cells(col).InnerText.Trim()
                workSheet.SetCellValue(row + 1, col, cellValue)
            Next
        End If
    Next
End If

' Auto-fit columns for better readability
For col As Integer = 0 To If(headers?.Count, 0) - 1
    workSheet.AutoSizeColumn(col)
Next

' Save the Excel file
workBook.SaveAs("ExportedTable.xlsx")
$vbLabelText   $csharpLabel

該程式碼可以加強其他格式選項,如數字格式單元格註釋超連結,以建立更復雜的Excel輸出。 對於大型資料集,考慮使用IronXL的性能優化功能來處理文件大小限制

Excel API結構如何運作?

此程式碼演示了IronXL的C# Excel操作的直觀API。 首先,建立了一個新的工作簿和工作表。 然後遍歷解析後的HTML表格標題,將它們放置在第一行,同時應用粗體格式和綠色背景顏色。 HTML表格中的資料行以類似的方式處理,將每個單元格的文字內容提取並放置在相應的Excel單元格中。 AutoSizeColumn函式確保所有內容可見,最後,工作簿作為XLSX文件保存。 您可以輕鬆地下載生成的文件或將其儲存在資料庫中以便後續檢索。

對於需要審計跟踪的企業場景,您可以新增工作簿元資料,如作者資訊、建立日期和文件屬性。 該程式庫還支持列印設置配置以生成可列印的報告。

如何將HTML表格導出為C#中的Excel文件:圖1 - IronXL解析表格資料輸出

最終輸出是什麼樣子?

在這裡,您可以看到原始HTML表格與上述輸出進行對比,展示了IronXL如何在保持資料完整性的同時提供專業格式選項:

如何將HTML表格導出為C#中的Excel文件:圖2 - 解析後的Excel資料與原始HTML表格

如何處理常見的導出情景?

如何導出多個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
}
Dim tables = doc.DocumentNode.SelectNodes("//table")
For Each tbl In tables
    ' Create new worksheet for each table
    Dim ws As WorkSheet = workBook.CreateWorkSheet($"Table_{tables.IndexOf(tbl) + 1}")
    ' Process table as shown above
Next
$vbLabelText   $csharpLabel

對於更高級的情景,您可以合併多個Excel範圍,實施資料驗證,或新增條件格式規則以突出顯示重要的資料模式。

我應該實施什麼錯誤處理?

對於錯誤處理,請將解析邏輯包裹在try-catch塊中,以優雅地處理格式錯誤的HTML。 IronXL自動處理資料型別檢測,適當時將數字字串轉換為數字,使用其內建轉換功能。 對於涉及動態內容的更複雜場景,開發者通常將此方法與Selenium WebDriver等工具結合使用,以處理JavaScript渲染的表格。

在處理CSV文件TSV資料時,IronXL提供專門的方法來處理基於分隔符的格式。 該程式庫還支持不同電子表格格式之間的轉換,讓導出到不同系統所需的格式變得容易。

我如何處理特殊的資料需求?

當從URL或資料庫查詢中處理內容以便進一步分析時,您可能需要處理如隱藏字段值或特殊格式要求等附加細節。 預設行為對於標準表格效果很好,但您可以自定義字體大小、字體系列和其他樣式屬性,為每列或根據需要的任何特定表格行使用IronXL的樣式API

對於需要排序修剪的資料,IronXL提供內建方法在最終導出之前清理和組織資料。 您還可以根據解析需求動態地新增列和行,或者在處理過程中根據需要插入新的列和行

企業應用通常要求導出到不同格式,如轉換為HTML供網頁顯示,或通過DataTable轉換與SQL資料庫整合。 IronXL支持所有這些場景,提供專用方法和詳細文件

此解決方案的關鍵收益是什麼?

IronXL和HTML Agility Pack的組合為在C#中導出HTML表格到Excel提供了強大的靈活解決方案。 本文展示了將HTML內容轉換為XLSX格式、導出datatable資訊以及建立立體的電子表格文件的簡單步驟。 這種方法提供了比固定內建方法更多的控制能力,允許開發者在利用IronXL的全面Excel功能的同時,處理複雜的HTML結構。

對於企業部署,IronXL提供詳細的安全文件靈活的授權選項,並支持授權擴展升級。 該程式庫的變更記錄顯示了性能和功能的持續改進,確保了企業項目的長期生命力。

無論您是在構建網頁抓取程式、從資料庫遷移遺留資料、自動化報告生成圖表,或者對大資料集進行資料分析,此解決方案都能滿足企業需求。 提供的程式碼範例展示了如何處理各種輸入來源,從靜態HTML到通過URL檢索的動態內容。 您可以輕鬆地將結果導出以供下載,或在您的.NET MAUI應用程式或傳統桌面解決方案中進一步處理。

對於需要高級Excel功能的組織,IronXL支持聚合函式Excel公式在C#中的使用,甚至直接從Excel更新資料庫記錄。 該程式庫支持保護Excel文件,確保資料在整個導出過程中的安全性。

準備好將您的HTML資料轉換為專業的Excel工作表文件了嗎? 馬上開始您的IronXL免費試用,體驗無需Office依賴的程式化Excel操作的靈活性。 如需生產部署,探索我們的授權選項,起價為$999。 存取我們的全面教程以了解更多關於高級Excel自動化技術的資訊。

常見問題

使用IronXL將HTML表格轉換為Excel的主要好處是什麼?

IronXL允許您輕鬆地將HTML表格資料轉換為Excel試算表,其靈活的方法不需要Microsoft Office,實現跨平台相容性。

IronXL能夠在轉換為Excel時處理複雜的HTML表格結構嗎?

是的,IronXL旨在處理複雜的HTML表格結構,確保資料準確導出到Excel,同時保持原始佈局和格式。

是否可以使用IronXL在C#中自動化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擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話