フッターコンテンツにスキップ
IRONXLの使用

C#でHTMLテーブルをExcelファイルにエクスポートする方法

ビジネスアプリケーションでは、データ移行、レポート生成、さらに分析が必要なウェブページのために、HTMLテーブルデータを抽出してエクセルシートに変換することが一般的な要件です。 この記事では、HTMLからExcel形式にデータテーブルの内容をエクスポートするための簡単な手順を提供します。 一部のライブラリでは、HTMLテーブルを変換するための組み込みメソッドを提供していますが、これらはしばしばファイル形式やサポート機能に制限があります。

HTMLテーブルをexcelにエクスポートする必要がある場合、エクセルワークシートの構造とHTMLテーブルの関係を理解することが重要です。 このガイドでは、HTMLテーブルからexcel形式にデータを効率的に転送し、データの整合性を維持したプロフェッショナルなエクセルワークシート出力を作成する方法を示します。

IronXLは、HTMLパースとExcel操作機能を組み合わせて、C#でHTMLテーブルをExcelにエクスポートする柔軟な方法を提供します。 URLからデータをダウンロードする必要がある場合や、データベースからコンテンツを処理する必要がある場合、このソリューションは様々な入力シナリオに対応します。

なぜHTMLテーブルデータのエクスポートにIronXLを選ぶのか?

IronXL excels at creating and manipulating Microsoft Officeのインストールを必要とせずにExcelファイルを作成および操作できるため、サーバー環境やクロスプラットフォームアプリケーションに理想的です。 HTML Agility Packと組み合わせることで、IronXLはあらゆるHTMLテーブル構造をエクセルシートデータに変換するための多用途なソリューションになります。 このアプローチは.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の自動化ニーズに対する完全なソリューションとなります。 データテーブルオブジェクトやスプレッドシートファイルを使用する場合でも、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

このコードは、C#のExcel操作を行うためのIronXLの直感的なAPIを示しています。 まず、新しいWorkBookおよびWorkSheetを作成します。 次に、パース済みのHTMLテーブルヘッダーを反復して最初の行に配置し、太字のフォーマットと緑色の背景色を適用します。 HTMLテーブルからのデータ行も同様に処理され、各セルのテキストコンテンツが抽出され、対応するExcelセルに配置されます。 AutoSizeColumn関数は、すべてのコンテンツが表示されることを保証し、最後にワークブックをXLSXファイルとして保存します。生成されたファイルを簡単にダウンロードしたり、後での取り出しのためにデータベースに保存できます。

HTMLテーブルをExcelファイルにエクスポートする方法:図1 - IronXLでパースされたテーブルデータの出力

ここでは、元のHTMLテーブルと上記の出力を比較できます:

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はデータ型の自動検出を自動的に行い、適切な場合に数値文字列を数値に変換します。 動的コンテンツを含むより複雑なシナリオでは、開発者はJavaScriptでレンダリングされたテーブルのためにSelenium WebDriverのようなツールと組み合わせてこのアプローチを使用することがよくあります。

URLやデータベースクエリからコンテンツを処理してさらなる分析を行う場合、隠しフィールド値や特殊なフォーマット要件などの追加の詳細を処理する必要がある場合があります。 デフォルトの動作は標準的なテーブルにはよく機能しますが、各最初の列や必要に応じて特定のテーブル行のためにフォントサイズ、フォントファミリー、その他のスタイリングプロパティをカスタマイズできます。

結論

IronXLとHTML Agility Packの組み合わせは、C#でのHTMLテーブルのExcelへのエクスポートのための堅牢で柔軟なソリューションを提供します。 この記事では、HTMLコンテンツをxlsx形式に変換し、データテーブル情報をエクスポートし、プロフェッショナルなスプレッドシートファイルを作成する簡単な手順を示しました。 このアプローチは、堅苦しい組み込みメソッドよりも多くのコントロールを提供し、IronXLの包括的なExcel機能を活用しながら複雑なHTML構造を処理することができます。

あなたがWebスクレーパーを構築している、データベースからのレガシーデータを移行している、チャート付きのレポート生成を自動化している、大量のデータセットでデータ分析を行っている際に、このソリューションはエンタープライズニーズに応えるためにスケールします。 提供されたコード例は、静的HTMLからURLを介して取得した動的コンテンツまで、様々な入力ソースを処理する方法を示しています。 結果を簡単にエクスポートしてダウンロードしたり、.NETアプリケーションでさらに処理することができます。

HTMLデータをプロフェッショナルなエクセルシートファイルに変換する準備はできましたか? 今すぐIronXLの無料トライアルを開始し、Office依存を排除したプログラムによるExcel操作の柔軟性を体験してください。 本番デプロイメントの場合、ライセンスオプションを探索して、$799から始めてください。

よくある質問

IronXLを使ってHTMLテーブルをExcelに変換する主な利点は何ですか?

IronXLは、Microsoft Officeを必要とせずに、柔軟なアプローチでHTMLテーブルデータをExcelスプレッドシートに簡単に変換でき、クロスプラットフォーム互換性を可能にします。

IronXLはExcelに変換する際に複雑なHTMLテーブル構造を処理できますか?

はい、IronXLは複雑なHTMLテーブル構造を管理するように設計されており、データが元のレイアウトとフォーマットを保持しながら正確にExcelに輸出されることを保証します。

IronXLを使用してC#でHTMLテーブルをExcelに自動変換することは可能ですか?

もちろん、IronXLは自動化をサポートしており、開発者がC#アプリケーション内でプログラムによってHTMLテーブルをExcelシートに変換することで、データ処理ワークフローを効率化します。

HTMLテーブルをExcelに変換する際、IronXLはさまざまなファイル形式をサポートしていますか?

IronXLはXLSX、XLS、CSVなどのさまざまなExcelファイル形式をサポートしており、アプリケーションのニーズに最適な出力形式を選択する柔軟性を提供します。

IronXLを使ってHTMLからExcelに変換する際にMicrosoft Officeをインストールする必要がありますか?

いいえ、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は現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。