日常の .NET 開発において、Excel ファイルの操作は頻繁に発生します。例えばデータの読み込み、書き込み、修正、またはワークシートのコピーなどが挙げられます。Free Spire.XLS for .NET は機能豊富な無料クラスライブラリで、ワークシートのコピーを含む多様な Excel 操作をサポートしています。本稿では、このライブラリを活用して「同一ワークブック内」または「異なるワークブック間」でワークシートをコピーする具体的な方法を詳しく解説します。
1. 環境準備
NuGet を通じて Free Spire.XLS をインストールします。
Install-Package FreeSpire.XLS
✅ 注意: 無料版にはページ数の上限が設定されているため、個人利用や小規模プロジェクトに適しています。
2. コア機能
Free Spire.XLS は Worksheet.CopyFrom()
メソッドを提供しており、以下の2種類のワークシートコピーを簡便に実現できます。
- 同一ワークブック内でのコピー
- 異なるワークブック間でのコピー
3. サンプルコード
3.1 同一ワークブック内でワークシートをコピー
using Spire.Xls;
namespace CopyExcelWorksheet
{
class Program
{
static void Main(string[] args)
{
// Excel ファイルを読み込み
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 同一ワークブック内に新しいワークシートを追加
workbook.Worksheets.Add("Sheet1_Copy");
// 指定したワークシートの内容を新しいワークシートにコピー
workbook.Worksheets[1].CopyFrom(workbook.Worksheets[0]);
// 結果ファイルを保存
workbook.SaveToFile("ワークシート複製.xlsx", ExcelVersion.Version2016);
}
}
}
✅ メリット:ファイル名の変更は不要で、元のワークシートの書式とデータがそのまま保持されます。
3.2 異なるワークブック間でワークシートをコピー
using Spire.Xls;
namespace CopyExcelWorksheet
{
class Program
{
static void Main(string[] args)
{
// ソース Excel ファイルを読み込み
Workbook srcWorkbook = new Workbook();
srcWorkbook.LoadFromFile("Sample.xlsx");
// ソースワークブックから1番目のワークシートを取得
Worksheet srcSheet = srcWorkbook.Worksheets[0];
// ターゲット Excel ファイルを読み込み
Workbook targetWorkbook = new Workbook();
targetWorkbook.LoadFromFile("New.xlsx");
// ターゲットワークブック内に新しいワークシートを追加
Worksheet targetSheet = targetWorkbook.Worksheets.Add("テンプレート");
// ソースワークシートの内容をターゲットワークシートにコピー
targetSheet.CopyFrom(srcSheet);
// ターゲットファイルを保存
targetWorkbook.SaveToFile("異ファイル間複製.xlsx", FileFormat.Version2013);
}
}
}
💡 適用シーン:ワークブックAのテンプレートをワークブックBにコピーし、迅速に新しいExcelファイルを生成するケースに最適です。
バッチ処理例:複数のワークシートを一括コピー
string[] sheetNames = { "Sheet1", "Sheet2", "Sheet3" };
foreach (string name in sheetNames)
{
Worksheet srcSheet = workbook.Worksheets[name];
Worksheet newSheet = workbook.Worksheets.Add($"Copy_{name}");
newSheet.CopyFrom(srcSheet);
}
🚀 効率向上ポイント:一括処理で複数のワークシートを同時にコピーでき、重複するコードを大幅に削減できます。
4. ベストプラクティスの推奨
-
書式とスタイルの保持:
CopyFrom()
メソッドは、フォント、罫線、セルの背景色などのスタイル情報を自動的に保持するため、手動で調整する手間が省けます。 -
メモリリークの防止: Excel 操作が完了した後は、必ず
workbook.Close()
メソッドを呼び出すか、using
文などを活用してリソースを適切に解放してください。 -
エラーハンドリングの強化: ファイル読み込み・保存などの重要な処理は、
try-catch
ブロックで囲み、ファイル不存在やアクセス権限エラーなどに対応すると安定性が向上します。
オフィス自動化が急速に進む現在、ワークシートのコピーは単なる基本操作ではなく、開発効率を引き上げるコアスキルの一つです。本稿で紹介した無料 .NET Excel ライブラリを使用すると、開発者は C# 環境で Office をインストールすることなく、ファイル間・ワークシート間の高效なコピーを実現できます。コードが簡潔であり、動作も安定しているため、業務系システムの開発にも安心して活用できます。
リソース: