チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»データのインポート/エクスポート»C#:Excel ファイルと DataTable 間のデータ変換
2024-11-13

C#:Excel ファイルと DataTable 間のデータ変換

C# アプリケーションでは、Excel ファイルと DataTable 間でデータを効率よく変換することが、データの利用、分析、処理能力を向上させるために不可欠です。Excel から DataTable にデータを転送することで、.NET の機能を最大限に活用し、データの分析や変換、処理が可能になります。また、データを Excel に戻すことで、他のシステムと簡単に共有、報告、および統合できます。本記事では、C# コードを使用して Spire.XLS for .NET を活用し、Excel ファイルから DataTable にデータをエクスポートしDataTable から Excel ファイルにデータをインポートする方法を説明します。

Spire.XLS for .NET をインストールします

まず、Spire.XLS for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.XLS

Excel ファイルから DataTable へのデータエクスポート

Spire.XLS for .NET は、Worksheet.ExportDataTable() メソッドを提供しており、Excel ワークシート全体のデータを DataTable オブジェクトにエクスポートできます。また、Worksheet.Range[].ExportDataTable() メソッドにより、特定のセル範囲から DataTable にエクスポートすることも可能です。ExportTableOptions クラスを使用すると、セル範囲からデータをエクスポートする際のオプションをカスタマイズできます。Excel データを DataTable にエクスポートする詳しい手順は以下の通りです:

  • Workbook クラスのインスタンスを作成し、Workbook.LoadFromFile() メソッドを使用して Excel ファイルを読み込みます。
  • Workbook.Worksheets[] プロパティで、Excel ファイル内のワークシートにアクセスします。
  • Worksheet.ExportDataTable() メソッドで、ワークシート全体のデータを DataTable オブジェクトにエクスポートします。
  • または、ExportTableOptions のインスタンスを作成してエクスポートオプションを指定し、特定のセル範囲から DataTable にデータをエクスポートします。
  • C#
using Spire.Xls;
using System.Data;

namespace ExcelToDataTable
{
    class Program
    {
        static void Main(string[] args)
        {
            // Workbook インスタンスを作成
            Workbook wb = new Workbook();

            // Excel ファイルを読み込む
            wb.LoadFromFile("Sample.xlsx");

            // ワークシートを取得
            Worksheet sheet = wb.Worksheets[0];

            // ワークシートのデータを DataTable にエクスポート
            //DataTable dataTable = sheet.ExportDataTable();

            // または指定したセル範囲を DataTable にエクスポート
            ExportTableOptions options = new ExportTableOptions();
            options.ComputedFormulaValue = true;
            options.ExportColumnNames = false;
            options.KeepDataFormat = true;
            options.RenameStrategy = RenameStrategy.Letter;
            DataTable dataTable = sheet.Range[2, 1, 6, 5].ExportDataTable(options);

            // DataTable の列名を出力
            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                Console.Write(dataTable.Columns[i].ColumnName + "\t");
            }
            Console.WriteLine();

            // DataTable のデータ行を出力
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write(item + "\t");
                }
                Console.WriteLine();
            }
        }
    }
}

Excel ファイルから DataTable へのデータエクスポート

DataTable から Excel ファイルへのデータインポート

Spire.XLS for .NET は、DataTable オブジェクトのデータを Excel ワークシートに挿入するための Worksheet.InsertDataTable(DataTable, colHeaders: bool, firstRow: int, firstColumn: int) メソッドを提供しています。DataTable から Excel にデータをインポートする手順は以下の通りです:

  • データを定義し、DataTable オブジェクトを作成します。
  • Workbook インスタンスを作成し、Workbook.Worksheets.Clear() メソッドでデフォルトのワークシートをクリアします。
  • Workbook.Worksheets.Add(sheetName: string) メソッドで、指定した名前の新しいワークシートを挿入します。
  • Worksheet.InsertDataTable() メソッドを使用して、DataTable オブジェクトからワークシートにデータを挿入します。
  • 必要に応じて書式を調整します。
  • Workbook.SaveToFile() メソッドでワークブックを保存します。
  • C#
using Spire.Xls;
using System.Data;

namespace DataTableToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // データセットを定義し、DataTableインスタンスを作成
            // 新しい製品と数量でデータ配列を再定義
            string[,] data = new string[,]
            {
                { "カテゴリ", "書名", "著者", "出版社", "価格(円)" },
                { "小説", "ノルウェイの森", "村上春樹", "講談社", "1500" },
                { "科学", "人工知能の基礎", "佐藤一郎", "技術評論社", "2500" },
                { "歴史", "坂の上の雲", "司馬遼太郎", "文藝春秋", "1800" },
                { "哲学", "善と悪の彼岸", "フリードリッヒ・ニーチェ", "岩波書店", "1300" },
                { "芸術", "日本画入門", "横山大観", "美術出版社", "2000" },
                { "教育", "子どもを伸ばす方法", "齋藤孝", "NHK出版", "1200" }
            };
            DataTable dataTable = new DataTable();

            // 列数を取得
            int columnCount = data.GetLength(1);

            // DataTableに列を追加
            for (int col = 0; col < columnCount; col++)
            {
                dataTable.Columns.Add(data[0, col]);
            }

            // DataTableに行を追加
            for (int row = 1; row < data.GetLength(0); row++)
            {
                DataRow dataRow = dataTable.NewRow();
                for (int col = 0; col < columnCount; col++)
                {
                    dataRow[col] = data[row, col];
                }
                dataTable.Rows.Add(dataRow);
            }

            // Workbookインスタンスを作成
            Workbook workbook = new Workbook();

            // デフォルトのワークシートをクリアし、新しいワークシートを追加
            workbook.Worksheets.Clear();
            Worksheet sheet = workbook.Worksheets.Add("書目");

            // DataTableデータをワークシートに挿入
            sheet.InsertDataTable(dataTable, true, 1, 1);

            // 必要に応じてフォーマットを調整
            // フォントを調整
            sheet.Rows[0].Style.Font.Size = 13;
            sheet.Rows[0].Style.Font.IsBold = true;
            sheet.Rows[0].Style.Font.FontName = "Yu Gothic UI";
            for (int j = 1; j < sheet.AllocatedRange.RowCount; j++)
            {
                sheet.Rows[j].Style.Font.Size = 12;
                sheet.Rows[j].Style.Font.FontName = "Yu Gothic UI";
            }
            // 列幅を自動調整
            for (int i = 1; i <= sheet.AllocatedRange.ColumnCount; i++)
            {
                sheet.AutoFitColumn(i);
            }

            // ワークブックをファイルに保存
            workbook.SaveToFile("output/DataTableをExcelに挿入.xlsx", FileFormat.Version2016);
            workbook.Dispose();
        }
    }
}

DataTable から Excel ファイルへのデータインポート

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 144 times