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

IronXLを使用して C# で DataGridView を Excel にエクスポートする方法

IronXLを使用する場合、DataGridView から Excel ファイルにデータをエクスポートするには、数行の C# コードのみが必要です。 WorkBook を作成し、グリッドの列と行を反復処理して各セルの値をワークシートに書き込み、次に SaveAs を呼び出して完全にフォーマットされた .xlsx ファイルを生成します。Microsoft Office のインストールは不要です。

Excel エクスポート用に Windows フォーム プロジェクトを設定するにはどうすればよいですか?

Windows フォームは、 .NETエコシステムの基本的な GUI ライブラリであり、デスクトップ アプリケーションの構築に広く使用されています。 DataGridView コントロールは、最もよく使用されるコンポーネントの 1 つであり、DataTable、データベース クエリ結果、メモリ内リストなどのバインド可能なソースからの表形式のデータを表示、編集、管理します。

グリッド データを Excel にエクスポートすると、関係者にレポートを送信したり、監査用にスナップショットをアーカイブしたり、下流の分析ツールにデータを入力したりするなど、さまざまな日常的なニーズに対応できます。 従来の 2 つのアプローチは、Microsoft オフィス相互運用性 とサードパーティ ライブラリです。 相互運用性では、アプリケーションを実行するすべてのマシンに Excel のコピーがインストールされている必要があり、COM オブジェクトのライフサイクルの問題が発生し、サーバーまたはクラウドの展開でのパフォーマンスが低下します。 IronXL 、ClosedXML、Syncfusion などのライブラリは、Office に依存せずに Open XML ファイル形式に直接書き込むことで、これらの問題を回避します。

このガイドでは、 .NET 10 をターゲットとする C# でのIronXLアプローチについて説明しますが、 IronXL は.NET Framework 4.6.2 とすべての最新 for .NETバージョンをサポートしています。

前提条件

エクスポート コードを記述する前に、次の点を確認してください。

  • Visual Studio 2022以降
  • .NET 10 SDKがインストールされている
  • DataGridView コントロールを含む Windows フォーム アプリ プロジェクト
  • IronXLをインストールするためのNuGetアクセス

IronXL はどのようにインストールしますか?

Visual Studio でパッケージ マネージャー コンソールを開き、次のいずれかのコマンドを実行します。

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

または、ソリューション エクスプローラーでプロジェクトを右クリックし、 [NuGetパッケージの管理]を選択して、IronXl.Excel を検索し、 [インストール]をクリックします。

VB .NET 2010 でIronXLを使用して DataGridView から Excel にデータをエクスポートする: 画像 1 - インストール

インストールしたら、Excel 機能を使用するファイルの先頭にIronXL using ディレクティブを追加します。

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

IronXL は、XLSX、XLS、CSV、TSV など、すべての一般的なスプレッドシート形式をサポートしています。 このガイドでは、最新の Excel バージョンのデフォルト形式である XLSX を全体的に使用します。

DataGridView にサンプル データを入力するにはどうすればよいでしょうか?

このチュートリアルでは、フォームに DataGridView1 という名前の DataGridViewbtnExport という名前のボタンが含まれています。 グリッドには、フォームの Load イベントで、DataTable に保存されている従業員レコードが入力されます。

void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
$vbLabelText   $csharpLabel

各列は特定 for .NET型で定義されるため、後で数値の比較と書式設定が正しく機能します。 DataSource プロパティは、DataTableDataGridView に直接バインドし、フォームが開いたときにグリッドによってすべての行が自動的にレンダリングされます。 本番環境では、このデータは通常、ハードコードされた値ではなく、データベース クエリ、ORM 結果セット、または REST API 応答から取得されます。

VB .NET 2010 でIronXLを使用して DataGridView から Excel にデータをエクスポートする: 画像 2 - DataGridView 出力

DataGridView データモデルを理解する

DataGridView は、そのコンテンツ を 2 つのコレクションを通じて公開します: Columns (メタデータや列インデックス用) と HeaderText (実際のデータ セル用)。 各 DataGridViewRow には、列位置によってインデックス付けされた Cells コレクションが含まれています。 各セルの Value プロパティは、Excel セルに書き込む前にキャストまたは変換する必要があるボックス化されたオブジェクトを返します。 この階層を理解することは、信頼性の高いエクスポート ループを作成するために不可欠です。

DataTable はバックグラウンドで型指定された値を保存するため、小数点以下の給与はIronXLワークシートに書き込まれる前に文字列変換する必要がありません。 IronXL の SetCellValue メソッドは、bool、および DateTime のオーバーロードを受け入れるため、出力ファイルで元のデータ型を保持できます。

列ヘッダー付きの Excel ファイルに DataGridView データをエクスポートするにはどうすればよいですか?

エクスポート ロジックは、ボタンのクリック ハンドラー内にあります。 コードは新しい WorkBook を作成し、デフォルトのワークシートを取得し、列ヘッダーを最初の行に書き込み、次に各データ行をその下に書き込みます。

void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
$vbLabelText   $csharpLabel

WorkBookオブジェクトは、メモリ内の Excel ファイル全体を表します。 DefaultWorkSheet は、明示的にシートを作成する必要なく、最初のシートを返します。 外側のループは、HeaderText からのヘッダー テキストを 0 行目に書き込みます。 次に、ネストされたループは各データ行を反復処理し、セルの値を文字列に変換する前に null かどうかをチェックします。 row + 1 オフセットはデータをヘッダー行の下にシフトします。 SaveAs は、完成したブックをOpen XML XLSX ファイルとして指定されたパスに書き込みます。

VB .NET 2010 でIronXLを使用して DataGridView から Excel にデータをエクスポートする: 画像 3 - Excel 出力

結果のファイルは、Excel、Google Sheets、または XLSX 形式を読み取る任意のアプリケーションで開きます。 列ヘッダーは最初の行に表示され、すべてのデータ行は DataGridView に表示された順序と同じ順序で続きます。

エクスポートされた Excel ファイルにセルの書式設定を適用するにはどうすればよいですか?

単純なデータ ダンプは機能しますが、プレゼンテーションには使用できません。 IronXL のスタイル API を使用すると、保存する前に任意のセル範囲に太字フォント、背景色、テキスト色、数値書式を適用できます。

void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
$vbLabelText   $csharpLabel

GetRange メソッドは、標準の Excel 表記 (A1:D1) を受け入れて、連続したセル ブロックを選択します。 Style.SetBackgroundColor、および Style.Font.SetColor を設定すると、選択範囲内のすべてのセルにこれらの書式が適用されます。 数値列の場合、値を文字列ではなく decimal として書き込むと、データ型がそのまま維持されます。つまり、Excel は $#,##0 などの数値書式を正しく適用できます。 文字列として保存されたセルは数値書式コードに応答しません。

VB .NET 2010 でIronXLを使用して DataGridView から Excel にデータをエクスポートする: 画像 4 - フォーマットされた Excel 出力

IronXLスタイル設定ドキュメントを参照して、このパターンを拡張し、交互の行の網掛け、列幅の自動調整、またはペインの固定を適用できます。

DataGridView データを XLSX ではなく CSV にエクスポートするにはどうすればよいですか?

一部のワークフローでは、レガシー システムまたは軽量データ パイプラインとの互換性を確保するために CSV 出力が必要です。 IronXL は、メイン コードに追加の構成変更を加えずに CSV エクスポートを処理します。

void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
$vbLabelText   $csharpLabel

XLSX エクスポートからの唯一の変更点は、SaveAs に渡されるファイル拡張子です。 IronXL は拡張子を検出し、ワークブックを正しい形式で自動的にシリアル化します。 この一貫性により、出力形式に関係なくデータ書き込みロジックは同一のままになります。これは、形式ごとに個別のコードパスを必要とするライブラリに比べて大きな利点です。

CSV エクスポートは、下流のコンシューマーがPython pandas スクリプト、データベース一括インポート ツール、またはバイナリ XLSX ファイルを読み取ることができない分析プラットフォームである場合に特に便利です。

大規模な DataGridView データセットを効率的に処理するにはどうすればよいでしょうか?

数万行のグリッドの場合、パフォーマンスが考慮されるようになります。 次のパターンは、完全なデータセットを 1 回のパスで構築することでメモリ負荷を軽減します。

大規模データセットのIronXLエクスポート方法の比較
アプローチ 処理された行数 オフィス必須 型の保存
Microsoft.Office.Interop.Excel 最大約 65k (遅い) はい 部分的
IronXL (ストリングセル) 100万行以上 なし いいえ(全文)
IronXL (型別細胞) 100万行以上 なし はい
DataTable のIronXL 100万行以上 なし はい(自動)

DataGridViewDataTable にバインドされている場合、セルごとの反復処理を完全にバイパスして、 WorkSheet.LoadDataTableメソッドを使用してテーブルをIronXLに直接ロードできます。 このアプローチはより高速であり、すべての列タイプが自動的に保持されます。

DataTable に裏付けられていないグリッドの場合、前に示したセルごとのパターンが標準的なアプローチのままになります。 大規模なエクスポート中に UI の応答性を維持するために非同期的にエクスポートする必要がある場合は、エクスポート ロジックを Task.Run 呼び出しでラップし、結果をバックグラウンド スレッドで await します。 結果を UI スレッドにマーシャリングするパターンについては、非同期ファイル操作のドキュメントを参照してください。

DataGridView エクスポートの場合、 IronXL がオフィス相互運用性 よりも優れているのはなぜですか?

従来 for .NETソリューションでは、実行中の Excel プロセスを駆動するために Microsoft.Office.Interop.Excel を使用していました。 このアプローチでは、いくつかの展開および信頼性の問題が発生します。

  • アプリケーションを実行するすべてのマシンに、Microsoft Excel のライセンスコピーがインストールされている必要があります。
  • サーバー環境やクラウドコンテナでは、通常、Officeをインストールできません。
  • COM相互運用性では、メモリリークやゾンビExcelプロセスを回避するために、すべてのオブジェクトの明示的な解放が必要です。
  • COM境界を越えたエラー処理は冗長で脆弱である
  • 行数が増えるとパフォーマンスが急速に低下します

IronXL は、外部プロセスを起動せずにOOXML ファイル形式に直接書き込みます。 アプリケーションは自己完結型のユニットとして展開されます。 ライブラリの API は完全に管理された.NETであるため、ガベージ コレクションは、Marshal.ReleaseComObject 呼び出しなしでメモリを自動的に処理します。 プロセス間通信が発生しないため、速度が大幅に向上します。

代替案を評価するチームにとって、 ClosedXMLは人気のあるオープンソース オプションです。 IronXL は、 PDF 変換チャート生成、商用サポートなど、企業の調達決定の要因となる可能性のある幅広い機能セットを提供します。 IronXLライセンス オプションを確認し、チームの規模と展開シナリオに適した層を選択します。

機能比較: IronXL vs オフィス相互運用性
特徴 IronXL オフィス相互運用性
Officeのインストールが必要 なし はい
サーバー/クラウド展開 はい いいえ(サポートされていません)
管理メモリモデル はい いいえ(COM のクリーンアップが必要)
XLSX / CSV / XLS 形式 3つすべて インストールされているExcelによって異なります
スプレッドシートからのPDFエクスポート はい 追加のライブラリが必要です

IronXLチュートリアル セクションでは、既存の Excel ファイルの読み取り、テンプレートの変更、グラフの生成、条件付き書式の適用について説明します。これらはすべて、ここで示す DataGridView エクスポート パターンから自然に拡張される機能です。

次のステップは何ですか?

これで、 IronXLを使用して DataGridView をフォーマットされた Excel ファイルにエクスポートするための C# コードが機能するようになりました。 ここから、次の方向を検討してください。

-エラー処理を追加: エクスポート コードを try/catch ブロックで囲み、ファイルがロックされているかパスが無効な場合は、ユーザーフレンドリーなメッセージを表示します。 -ファイル パスの選択をサポート: SaveFileDialog を使用して、実行時にユーザーが出力場所とファイル名を選択できるようにします。 -実際のデータをロードする: サンプル DataTableADO .NETまたは Entity Framework を使用したデータベース クエリに置き換えます -既存のファイルの読み取り: WorkBook.Loadを使用して、常に新しいスプレッドシートを作成するのではなく、既存のスプレッドシートを開いて更新します。 -複数のシートにエクスポート: 関連するデータセットを整理するために、同じシートに追加のオブジェクトを作成します。 -条件付き書式を適用する: IronXL の条件付き書式 APIを使用して、しきい値を超えるセルを強調表示します。 -ライセンス オプションを確認します無料試用版が利用可能です。 ライセンス層は、個々の開発者から企業展開までをカバーします -完全なAPIリファレンスを参照: IronXLオブジェクトリファレンスには、利用可能なすべてのクラスとメソッドが記載されています。

よくある質問

C# で DataGridView データを Excel にエクスポートする最も簡単な方法は何ですか?

IronXLを使用すると、列ヘッダーとデータ行を WorkBook オブジェクトに書き込み、SaveAs を呼び出して XLSX ファイルを生成する短いループ処理で、C# で DataGridView データを Excel にエクスポートできます。Microsoft Office のインストールは不要です。

IronXLを使用して C# Windows フォーム アプリケーションで Excel ファイルを処理する方法を教えてください。

NuGet経由でIronXLをインストールし、 using IronXLディレクティブを追加し、 WorkBook.Create() を使用して WorkBook を作成し、 SetCellValue を使用してデータを書き込み、 SaveAs を使用して保存します。IronXLはXLSX、XLS、CSV 形式をサポートしています。

IronXLは大きなDataGridViewデータセットのExcelへのエクスポートをサポートしていますか?

はい、 IronXLは大規模なデータセットを効率的に処理します。DataTableに基づくDataGridViewの場合、LoadDataTableメソッドを使用してセルごとの反復処理をバイパスし、パフォーマンスをさらに向上させることができます。

IronXLを使用するには Microsoft Excel をインストールする必要がありますか?

いいえ。IronXLはExcelやCOMオートメーションを起動することなく、Open XMLファイル形式に直接書き込みます。IronXLで構築されたアプリケーションは、Officeが利用できないサーバーやクラウド環境に展開できます。

Excel エクスポートに Office Interop ではなくIronXLを使用する利点は何ですか?

IronXL はOffice のインストールを必要とせず、COM メモリ リークの問題を回避し、サーバーおよびクラウドの展開をサポートし、XLSX、XLS、および CSV ファイルの読み取りと書き込み用のクリーンな管理された.NET API を提供します。

IronXL はDataGridView データを XLSX だけでなく CSV にもエクスポートできますか?

はい。WorkBook.SaveAs に .csv ファイルのパスを渡すと、カンマ区切りのファイルが生成されます。データ書き込みコードはどちらの形式でも同じで、ファイル拡張子のみが異なります。

IronXLを使用してエクスポートされた Excel セルに書式設定を適用するにはどうすればよいでしょうか?

WorkSheet.GetRange を使用してセル範囲を選択し、Style プロパティにアクセスして、数値書式の Font.Bold、SetBackgroundColor、Font.SetColor、および FormatString を設定します。

C# プロジェクトでIronXLを使い始めるにはどうすればよいでしょうか?

プロジェクトでInstall-Package IronXLまたは dotnet add package IronXLを実行し、ファイルの先頭に using IronXLを追加して、ironsoftware.com/csharp/excel/ にあるIronXLドキュメントの例に従います。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me