How to Export HTML Table to Excel in C#
このガイドでは、C# でIronXLと HTML Agility Pack を使用して HTML テーブルデータを Excel ファイルにエクスポートする方法を説明します。これにより、Office に依存することなく、コンプライアンスが重要なアプリケーション向けに、解析、書式設定、およびデータ整合性に対するエンタープライズ グレードの制御が可能になります。
HTMLテーブルのデータを抽出してExcelシートに変換することは、データ移行、レポート作成、あるいはさらなる分析が必要なWebページなど、ビジネスアプリケーションにおいてよく求められる要件です。 この記事では、HTMLからExcel形式にデータテーブルの内容をエクスポートするための簡単な手順を提供します。 一部のライブラリでは、HTMLテーブルを変換するための組み込みメソッドを提供していますが、これらはしばしばファイル形式やサポート機能に制限があります。
C#でHTMLテーブルをExcelにエクスポートする必要がある場合、Excelワークシートの構造とHTMLテーブルの関係を理解することが非常に重要です。 このガイドでは、HTMLテーブルからExcel形式に効率的にデータを転送し、データの整合性を維持したプロフェッショナルなExcelワークシート出力を作成する方法を示します。
IronXLは、柔軟にHTMLテーブルコンテンツをExcelワークシートに変換する方法を提供し、HTML解析とExcel操作能力を組み合わせて、C#でHTMLテーブルデータをエクスポートします。 URLからデータをダウンロードする必要がある場合でも、データベースからコンテンツを処理する必要がある場合でも、このソリューションはさまざまな入力シナリオに対応し、Enterpriseセキュリティ基準を維持します。
なぜHTMLテーブルデータのエクスポートにIronXLを選ぶのか?
IronXLがEnterprise環境に適している理由とは?
IronXLは、Microsoft Officeのインストールを必要とせずにExcelファイルを作成および操作できるため、サーバー環境やクロスプラットフォームアプリケーションに理想的です。 このライブラリは、 Azure 、 AWS Lambda Functions 、およびDockerコンテナへのデプロイをサポートしており、最新のクラウドアーキテクチャとの互換性を確保しています。 HTML Agility Packと組み合わせることで、IronXLは堅牢なHTMLファイルとコンテンツパーサーとなり、あらゆるHTMLテーブル構造をExcelシートデータに変換する多用途なソリューションとなります。 このアプローチは.NETアプリケーションとシームレスに連携し、最適化されたパフォーマンス機能により大規模なデータセットを効率的に処理できます。
厳格なコンプライアンスが求められるEnterprise環境向けに、 IronXLは包括的なセキュリティドキュメントを提供し、パスワードで保護されたワークブックと暗号化されたワークシートをサポートしています。 このライブラリはLinuxサーバーとmacOSシステム上でもシームレスに動作し、多様なEnterpriseインフラストラクチャに不可欠な真のクロスプラットフォーム互換性を提供します。
IronXLは他のExcelライブラリと比べてどうですか?
Syncfusion ExcelライブラリのXlsIOのような特定のHTML形式とテーブル構造に限定されたImportHtmlTable機能を提供するライブラリとは異なり、IronXLのアプローチは開発者に解析および変換プロセスについて完全な制御を提供します。 この柔軟性により、開発者は、固定的な組み込みメソッドでは対応できない、ネストされたテーブル、カスタムデータフォーマット、選択的な列抽出といった複雑なシナリオを処理できるようになります。 デフォルト設定はほとんどの用途で問題なく機能しますが、セルのフォントやサイズ、背景のパターンや色、境界線の配置など、あらゆる詳細をカスタマイズできます。
IronXLの包括的なAPIリファレンスは、条件付き書式設定からグラフ作成まで、Excel操作のあらゆる側面を開発者が細かく制御できるようにします。 このレベルの制御は、規制遵守や企業標準のために特定のフォーマットが必要なEnterpriseデータを扱う場合に特に価値があります。
IronXLにはどのような高度な機能がありますか?
さらに、 IronXLは、数式サポート、セルスタイル設定、複数ワークシート管理、およびさまざまなエクスポート形式(XLSX、XLS、 JSON 、CSVファイル)など、包括的なExcel機能を提供します。 このライブラリは、合計、平均、最小値、最大値などの数学関数をサポートしており、生成されるExcelファイル内で複雑な計算を直接行うことができます。 グラフの作成、 PDFへのエクスポート、非表示フィールドデータの管理なども可能で、単純なHTMLテーブル変換にとどまらず、Excelの自動化ニーズに対応する包括的なソリューションとなっています。 IronXLは、 DataTableオブジェクトを扱う場合でも、スプレッドシートファイルを扱う場合でも、変換をシームレスに処理します。
Enterprise向けレポート作成のニーズに対応するため、 IronXLは数式の可読性を向上させるための名前付き範囲、データナビゲーションを容易にするためウィンドウ枠の固定、複雑なデータ構造を整理するためグループ/グループ解除機能をサポートしています。 このライブラリは、すべてのコンテンツが適切に表示されるように、自動サイズ調整機能も備えています。
必要なライブラリの設定方法
必要なNuGetパッケージはどれですか?
まず、NuGetパッケージマネージャーを介してIronXLとHTML Agility Packをインストールします。 IronXLは、すべての機能を試用できる無料トライアルを提供しており、Enterprise向け導入に関する詳細なライセンス文書も用意しています。
:ProductInstall Install-Package -Name IronXL.Excel, HtmlAgilityPack
Enterprise環境では、 Web.config でライセンスキーを設定するか、ライセンス APIを使用してプログラムで適用することができます。 このライブラリは、 ASP.NET WebアプリケーションやBlazorサーバーサイドアプリケーションなど、さまざまなデプロイメントシナリオをサポートしています。
どの名前空間をインポートすべきですか?
これらのNuGetパッケージを使用すると、Excel ドキュメントをプログラムで作成、読み込み、保存できます。 次に、必要なusingステートメントをC#コードファイルにインポートします。
using IronXL;
using HtmlAgilityPack;
using System;
using System.Linq;Imports IronXL
Imports HtmlAgilityPack
Imports System
Imports System.LinqImports IronXL
Imports HtmlAgilityPack
Imports System
Imports System.Linqこれらのライブラリはシームレスに連携し、HTML Agility PackがHTMLの解析を処理し、 IronXLがExcelファイルの作成と操作を管理します。 この例では、HTML テーブルをXLSX 形式に変換する簡単な方法を示します。 .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")' 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")この解析手法は、ウェブスクレイピング、データベースのエクスポート、動的に生成されたコンテンツなど、さまざまな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")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")このコードは、数値形式、セルコメント、ハイパーリンクなどの追加の書式設定オプションで拡張でき、より高度なExcel出力を作成できます。 大規模なデータセットの場合は、ファイルサイズの制限に対処するために、 IronXLのパフォーマンス最適化機能の使用を検討してください。
Excel APIの構造はどのように機能するのですか?
このコードは、IronXLのC# Excel操作のための直感的なAPIを示しています。 まず、新しいWorkBookおよびWorkSheetを作成します。 次に、解析されたHTMLテーブルヘッダーを順に処理し、太字の書式設定と緑色の背景色を適用しながら、最初の行に配置します。 HTMLテーブルからのデータ行も同様に処理され、各セルのテキストコンテンツが抽出され、対応するExcelセルに配置されます。 AutoSizeColumn関数によってすべてのコンテンツが表示されるようになり、最後にワークブックはXLSXファイルとして保存されます。 生成されたファイルは簡単にダウンロードしたり、後で取り出すためにデータベースに保存したりできます。
監査証跡が必要なEnterprise環境においては、作成者情報、作成日、文書プロパティなどのワークブックのメタデータを追加できます。 このライブラリは、印刷可能なレポートを生成するための印刷設定構成もサポートしています。

最終的なアウトプットはどのようになりますか?
ここでは、元のHTMLテーブルと上記の出力結果を比較して、 IronXLがProfessional書式設定オプションを提供しながらデータの整合性をどのように維持しているかを確認できます。

一般的なエクスポートシナリオへの対処方法
複数の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
NextDim 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より高度なシナリオでは、複数の Excel 範囲を組み合わせたり、データ検証を実装したり、条件付き書式ルールを追加して重要なデータパターンを強調表示したりできます。
どのようなエラー処理を実装すべきでしょうか?
エラーハンドリングのために、パースロジックをtry-catchブロックでラップして、不正なHTMLを適切に処理します。 IronXLはデータ型の検出を自動的に行い、組み込みの変換機能を使用して、必要に応じて数値文字列を数値に変換します。 動的コンテンツを含むより複雑なシナリオでは、開発者はJavaScriptでレンダリングされたテーブルのためにSelenium WebDriverのようなツールと組み合わせてこのアプローチを使用することがよくあります。
IronXLは、 CSVファイルやTSVデータを扱う際に、区切り文字ベースのフォーマットを処理するための特別な方法を提供します。 このライブラリは、さまざまなスプレッドシート形式間の変換もサポートしており、異なるシステムで必要とされる形式へのエクスポートを容易にします。
特別なデータ要件にはどのように対応すればよいですか?
URLやデータベースクエリのコンテンツをさらに分析するために処理する場合、隠しフィールドの値や特殊なフォーマット要件などの詳細を処理する必要がある場合があります。 デフォルトの動作は標準的なテーブルには適していますが、 IronXL のスタイリング APIを使用すると、必要に応じて各列または特定のテーブル行のフォント サイズ、フォント ファミリー、その他のスタイル プロパティをカスタマイズできます。
ソートやトリミングが必要なデータについては、 IronXLには最終エクスポート前にデータをクリーンアップおよび整理するための組み込みメソッドが用意されています。 解析要件に基づいて行と列を動的に追加したり、処理中に必要に応じて新しい行と列を挿入したりすることもできます。
Enterpriseアプリケーションでは、Web表示用のHTMLへの変換や、 DataTable変換を介したSQLデータベースとの統合など、さまざまな形式へのエクスポートが必要になることがよくあります。 IronXLは、専用のメソッドと包括的なドキュメントによって、これらのすべてのシナリオをサポートしています。
このソリューションの主な利点は何ですか?
IronXLとHTML Agility Packの組み合わせは、C#でのHTMLテーブルのExcelへのエクスポートのための堅牢で柔軟なソリューションを提供します。 この記事では、HTMLコンテンツをXLSX形式に変換し、データ化可能な情報をエクスポートし、プロフェッショナルなスプレッドシートファイルを作成する簡単な手順を紹介しました。 このアプローチは、堅苦しい組み込みメソッドよりも多くのコントロールを提供し、IronXLの包括的なExcel機能を活用しながら複雑なHTML構造を処理することができます。
Enterprise向け導入の場合、 IronXLは詳細なセキュリティドキュメント、柔軟なライセンスオプション、およびライセンスの拡張とアップグレードのサポートを提供します。 ライブラリの変更履歴は、パフォーマンスと機能の継続的な改善を示しており、Enterpriseプロジェクトの長期的な存続可能性を保証します。
ウェブスクレイパーの構築、データベースからのレガシーデータの移行、グラフを使用したレポート生成の自動化、大規模データセットのデータ分析など、どのような用途であっても、このソリューションはEnterpriseのニーズに合わせて拡張可能です。 提供されるコード例では、静的なHTMLからURL経由で取得された動的なコンテンツまで、さまざまな入力ソースを処理する方法を示しています。 結果は簡単にエクスポートして、ダウンロードしたり、 .NET MAUIアプリケーションや従来のデスクトップソリューションでさらに処理したりできます。
高度なExcel機能を必要とする組織向けに、 IronXLは集計関数、 C#でのExcel数式、さらにはExcelから直接データベースレコードを更新する機能をサポートしています。 ライブラリがExcelファイルを保護する機能を備えているため、エクスポートプロセス全体を通してデータのセキュリティが確保されます。
HTMLデータをプロフェッショナルなExcelシートファイルに変換する準備はできましたか? 今すぐIronXLの無料トライアルを開始し、Office依存を排除したプログラムによるExcel操作の柔軟性を体験してください。 本番環境でのデプロイには、$999から始まるライセンスオプションを探ることを検討してください。 高度なExcel自動化テクニックについてさらに詳しく知りたい場合は、包括的なチュートリアルをご覧ください。
Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
