チュートリアル

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

チュートリアル».NET»Spire.XLS for .NET»文書操作»C#:ストリームで動的に Excel ファイルを作成、読み込み、保存
2024-12-27

C#:ストリームで動的に Excel ファイルを作成、読み込み、保存

C# でのストリーム操作を使用することで、開発者は Excel ファイルを動的に作成、読み込み、保存することができ、柔軟かつ効率的なデータ処理が可能になります。この方法では、物理的なファイルストレージが不要になり、アプリケーションのパフォーマンスと応答性が向上します。リアルタイムでのデータ操作やストレージに制限のある環境に最適で、データ交換やシステム統合を簡素化します。本記事では、Spire.XLS for .NET を使用して、C# でのストリームを介した Excel ファイルの作成、読み込み、編集、保存方法を示し、アジャイルでスケーラブルなデータ管理ソリューションを提供します。

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

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

PM> Install-Package Spire.XLS

Excel ファイルを動的に作成し、ストリームに保存

Spire.XLS for .NET を使用すると、開発者は Workbook オブジェクトを初期化し、データやフォーマットを埋め込んでから、Workbook.SaveToStream() メソッドを使用してワークブックをストリームに保存することで、メモリ内で Excel ファイルを動的に作成できます。この方法では、物理的なファイルストレージが不要になり、アプリケーションのパフォーマンスと応答性が向上します。

以下は、C# で Excel ファイルを作成し、ストリームに保存する手順です:

  • Workbook クラスのインスタンスを作成して新しい Excel ワークブックを生成します(デフォルトで 3 つのワークシートが含まれます)。
  • Workbook.Worksheets[] プロパティを使用して特定のワークシートを取得します。
  • DataTable を使用してデータを整理し、ワークシートに書き込むデータを定義します。
  • Worksheet.InsertDataTable() メソッドまたは Worksheet.Range[].Value プロパティを使用してデータをワークシートに挿入します。
  • 必要に応じてセルのフォーマット(色、フォント、罫線など)を適用し、列幅を調整します。
  • Workbook.SaveToStream() メソッドを使用してワークブックをメモリストリームに保存します。そのストリームを使用してファイルに保存したり、ネットワーク経由で送信することが可能です。
  • C#
using Spire.Xls;
using System.Data;
using System.Drawing;

namespace CreateExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // 新しいワークブックインスタンスを作成
            Workbook workbook = new Workbook();

            // ワークブックの最初のワークシートにアクセス
            Worksheet sheet = workbook.Worksheets[0];

            // サンプルデータを含むDataTableを作成してデータを追加
            DataTable dataTable = new DataTable("データ");
            dataTable.Columns.Add("ID", typeof(int));
            dataTable.Columns.Add("名前", typeof(string));
            dataTable.Columns.Add("年齢", typeof(int));
            dataTable.Columns.Add("国", typeof(string));
            dataTable.Columns.Add("給与 ($)", typeof(decimal));
            dataTable.Rows.Add(101, "ジョン・スミス", 28, "アメリカ", 54000m);
            dataTable.Rows.Add(102, "マリア・ガルシア", 34, "日本", 65500m);
            dataTable.Rows.Add(103, "リアム・ジョンソン", 22, "カナダ", 48000m);
            dataTable.Rows.Add(104, "エマ・ブラウン", 30, "オーストラリア", 72300m);
            dataTable.Rows.Add(105, "ウェイ・チャン", 40, "中国", 58700m);
            dataTable.Rows.Add(106, "ソフィア・ロペス", 26, "メキシコ", 45200m);

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

            // ワークシートをフォーマット
            // ヘッダー行をスタイル設定
            sheet.Rows[0].Style.Color = Color.LightSkyBlue;
            sheet.Rows[0].Style.Font.FontName = "Yu Gothic UI";
            sheet.Rows[0].Style.Font.Size = 12f;
            sheet.Rows[0].BorderAround(); // ヘッダー行に外枠を追加
            sheet.Rows[0].Borders.Color = Color.LightSteelBlue; // 枠線の色を設定

            // データ行をスタイル設定
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                sheet.Rows[i].Style.Color = Color.LightGray;
                sheet.Rows[i].Style.Font.FontName = "Yu Gothic UI";
                sheet.Rows[i].Style.Font.Size = 11f;
            }
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].BorderInside(); // データ行に内枠を追加
            sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].Borders.Color = Color.LightSteelBlue; // 枠線の色を設定

            // 列幅を内容に合わせて調整
            for (int j = 1; j <= sheet.AllocatedRange.Columns.Count(); j++)
            {
                sheet.AutoFitColumn(j);
            }

            // ワークブックをメモリストリームに保存
            MemoryStream stream = new MemoryStream();
            workbook.SaveToStream(stream, FileFormat.Version2016);

            // ストリームの内容をファイルに書き込む
            File.WriteAllBytes("output/ストリームでExcelファイルを作成.xlsx", stream.ToArray());

            // リソースを解放
            workbook.Dispose();
        }
    }
}

C# コードで Excel ファイルを作成し、ストリームに保存

C# でストリームから Excel ファイルを読み込む

Spire.XLS for .NET を使用すると、Workbook.LoadFromStream() メソッドで直接ストリームから Excel ファイルを読み込むことができます。ファイルが読み込まれると、開発者はセルデータに簡単にアクセスでき、ファイル I/O 操作を必要とせずにメモリの使用効率を最適化し、迅速かつ柔軟にデータ処理を行えます。

C# でストリームから Excel ファイルを読み込み、データを取得する手順は次の通りです:

  • Workbook インスタンスを作成します。
  • MemoryStream または FileStream オブジェクトを作成します。
  • Workbook.LoadFromStream() メソッドを使用して、ストリームから Excel ファイルをワークブックに読み込みます。
  • Workbook.Worksheets[] プロパティを使用して最初のワークシートを取得します。
  • ワークシートの行と列をループして、セルのデータを Worksheet.AllocatedRange[].Value プロパティで抽出します。
  • 取得したデータを表示するか、他の操作に使用します。
  • C#
using Spire.Xls;

namespace LoadExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // Workbookクラスのインスタンスを作成
            Workbook workbook = new Workbook();

            // メモリストリームを作成
            MemoryStream stream = new MemoryStream();
            File.OpenRead("Sample.xlsx").CopyTo(stream);

            // ストリームからExcelファイルを読み込む
            workbook.LoadFromStream(stream);

            // ワークブック内の最初のワークシートにアクセス
            Worksheet sheet = workbook.Worksheets[0];

            // ワークシートから取得したデータを格納するリストを初期化
            List<List<string>> data = new List<List<string>>();
            for (int i = 0; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                // 各行のデータを保持するリストを作成
                List<string> lines = new List<string>();
                for (int j = 0; j < sheet.AllocatedRange.Columns.Count(); j++)
                {
                    // セルのテキストを取得して行に追加
                    lines.Add(sheet.AllocatedRange[i + 1, j + 1].Value);
                }
                // 行をデータリストに追加
                data.Add(lines);
            }

            // 取得したデータを出力するか、他の操作に利用
            foreach (List<string> lines in data)
            {
                Console.WriteLine(string.Join(" | ", lines));
            }
        }
    }
}

Spire.XLS で Excel ファイルを読み込み、データを取得

C# でストリーム内で Excel ファイルを編集する

Spire.XLS for .NET を使用すると、Excel ファイルをメモリ内で編集できます。最初にファイルを Workbook オブジェクトに読み込んでから、セルの値やフォーマットを変更し、変更後のファイルをストリームに保存することができます。この方法により、物理的なストレージを使用せずにシームレスなリアルタイムの変更が可能です。

C# でストリーム内の Excel ファイルを編集する手順は次の通りです:

  • Workbook インスタンスを作成します。
  • MemoryStream または FileStream インスタンスを作成します。
  • Workbook.LoadFromStream() メソッドを使用して、ストリームから Excel ファイルを読み込みます。
  • Workbook.Worksheets[] プロパティを使用して最初のワークシートにアクセスします。
  • セル範囲の Style プロパティを使用して、ヘッダー行やデータ行のフォント、サイズ、背景色などを変更します。
  • Worksheet.AutoFitColumn() メソッドを使用して、内容に合わせて列幅を自動調整します。
  • Workbook.SaveToStream() メソッドを使用して変更をストリームに保存します。
  • C#
using Spire.Xls;
using System.Drawing;

namespace ModifyExcelStream
{
    class Program
    {
        static void Main(string[] args)
        {
            // Workbookクラスの新しいインスタンスを作成
            Workbook workbook = new Workbook();

            // メモリストリームを作成
            MemoryStream stream = new MemoryStream();
            File.OpenRead("Sample.xlsx").CopyTo(stream);

            // ストリームからExcelファイルを読み込む
            workbook.LoadFromStream(stream);

            // ワークブック内の最初のワークシートにアクセス
            Worksheet sheet = workbook.Worksheets[0];

            // ヘッダー行のスタイルを変更
            CellRange headerRow = sheet.AllocatedRange.Rows[0];
            headerRow.Style.Font.FontName = "Yu Gothic UI";
            headerRow.Style.Font.Size = 12f;
            headerRow.Style.Color = Color.LightBlue;

            // データ行のスタイルを変更
            for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++)
            {
                CellRange dataRow = sheet.AllocatedRange.Rows[i];
                dataRow.Style.Font.FontName = "Yu Mincho";
                dataRow.Style.Font.Size = 10f;
                dataRow.Style.Color = Color.LightGray;
                // 行ごとに交互の色を付ける(偶数行)
                if (i % 2 == 0)
                {
                    dataRow.Style.Color = Color.LightSlateGray;
                }
            }

            // 列の幅をコンテンツに基づいて自動調整
            for (int k = 1; k <= sheet.AllocatedRange.Columns.Count(); k++)
            {
                sheet.AutoFitColumn(k);
            }

            // 枠線の色を変更
            sheet.AllocatedRange.Style.Borders.Color = Color.White;

            // 修正したワークブックをストリームに保存
            workbook.SaveToStream(stream);

            // ストリームの内容を新しいファイルに書き込む
            File.WriteAllBytes("output/ストリームでExcelファイルを修正.xlsx", stream.ToArray());

            // リソースを解放
            workbook.Dispose();
        }
    }
}

.NETを使ったストリームでのExcelファイルの修正

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

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

Read 53 times