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 ファイルを読み込む
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));
}
}
}
}
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();
}
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。