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