Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cellsは、単一のExcelファイルを複数のファイルに分割することをサポートします。これには主に2つの方法があります:(1)ソースワークブックの各ワークシートを新しいワークブックにコピーし、それぞれを個別のファイルとして保存する方法、および(2)ワークシートから特定のセル範囲を新しいワークブックにコピーする方法です。データのサブセットを配布したり、受信者ごとに小さなレポートを作成したり、個別の処理のためにデータを分離したりする必要がある場合、どちらの方法も役立ちます。
開発者が単一のExcelファイルを複数の小さなファイルに分割する必要がある現実的なシナリオは多数あります。たとえば、ワークブックには部門ごとに1つのワークシートが含まれており、各部門責任者は自分のシートのみを受け取る必要がある場合があります。その他のケースでは、ワークブックの他の部分を公開せずに、ワークシートから特定のテーブルまたはデータブロックを抽出して、メールでスタンドアロンファイルとして送信したい場合があります。大規模な統合ワークブックも、取り扱いの簡素化、読み込みの高速化、または他のシステムによる後続処理のために、より小さなピースに分割する必要がある場合があります。
Aspose.Cellsは、このタスクに対して2つの柔軟なアプローチを提供します。最初のアプローチでは、ソースワークブック内のすべてのワークシートを反復処理し、その内容を新しいWorkbookインスタンスにコピーして、それぞれを個別のファイルとして保存します。2番目のアプローチでは、ワークシート内の特定のセル範囲に焦点を当て、その範囲のみを新しいワークブックにコピーします。どちらの場合も、一般的な流れは同じです:Workbookクラスを使用してソースワークブックを読み込み、WorksheetおよびCellsオブジェクトを介して関連データにアクセスし、コンテンツを宛先のWorkbookに転送してから、宛先をディスクに保存します。
このアプローチでは、ソースワークブックを1回開き、そのWorksheetsコレクション内のすべてのWorksheetに対して新しい宛先Workbookが作成されます。次に、ソースワークシートのコンテンツが宛先ワークブックの最初のワークシートにコピーされ、宛先ワークブックはソースワークシートの名前から派生した名前のファイルとして保存されます。結果は、ワークシートごとに1つの出力ファイルとなり、各出力ファイルには単一のソースシートのデータが含まれます。
この方法は、ソースワークブックの各ワークシートが論理的に独立した情報の単位(部門、地域、月、製品ラインなど)を表しており、各単位を個別に配信または処理したい場合に適切な選択です。
次の手順は、各ワークシートを新しいワークブックにコピーすることによってExcelファイルを分割する方法を説明しています:
Workbookオブジェクトをインスタンス化し、ファイルパスをそのコンストラクタに渡すことで、ソースExcelファイルを開きます。forまたはforeachループを使用してWorkbook.Worksheetsコレクションを反復処理し、ソースファイル内のすべてのWorksheetが処理されるようにします。Workbookインスタンス(空のワークブック)を作成します。Cellsコレクションのセルを反復処理し、それらの値を宛先ワークシートの対応するセルに書き込むことによって行うことも、Cells.Copyメソッドを使用して範囲全体を一度に転送することによって行うこともできます。dataDir + worksheet.Name + ".xls")を構築します。Workbook.Saveメソッドを呼び出して、ファイルをディスクに書き込みます。期待される出力は、データディレクトリ内の新しいファイルのセットであり、ソースワークブックからワークシートごとに1つのファイルです。各ファイルは対応するソースシートにちなんで命名され、そのファイルにはその単一シートのデータ(およびオプションで書式設定)が含まれます。
分割する必要のあるデータがワークシート全体ではなく、A1:D10や特定のテーブルを表す名前付き範囲など、ワークシートの特定の矩形領域に対応する場合があります。このような場合、ワークシート全体をコピーするのは無駄であり、より正確なアプローチが必要です:ソース範囲を特定し、その範囲のみを新しいワークブックにコピーして、新しいファイルを保存します。
このアプローチは、より大きなワークシートから無関係なコンテンツをすべて破棄しながら、単一のテーブル、レポートブロック、またはデータ領域を抽出したい場合に最適です。また、シートのユーザーが選択した領域をスタンドアロンファイルとしてエクスポートする場合にも役立ちます。
次の手順は、特定の範囲を新しいワークブックにコピーすることによってExcelファイルを分割する方法を説明しています:
Workbookオブジェクトをインスタンス化することで、ソースExcelファイルを開きます。Worksheetを、インデックス(たとえば、最初のシート)またはWorksheetsコレクションから名前で検索して取得します。A1:C10などのハードコードされたセル範囲、Worksheet.Cellsコレクションを介して取得された名前付き範囲、またはWorksheet.Cells.CreateRangeを介して作成された範囲のいずれかです。Workbookインスタンスを作成します。Worksheet(デフォルトのシート)にアクセスします。A1から始めて、ソース範囲を宛先ワークシートにコピーします。宛先のCellsコレクションのCells.Copyメソッドを使用して範囲全体をコピーするか、ソース範囲のセルを反復処理し、PutValueを使用してそれらの値を宛先セルに書き込むことができます。オプションのCopyOptionsを指定して、転送される内容(値のみ、値とスタイル、数式など)を制御できます。Workbook.Saveメソッドを使用して、宛先ワークブックをディスク上の新しいファイルパスに保存します。期待される出力は、ソースワークブックから抽出された指定された範囲の値(およびオプションで書式設定)のみを含む、データディレクトリ内の単一の新しいファイルです。宛先ファイルはソースファイル内の他のデータとは関係がありません。最初のワークシートのセルA1から始まる抽出された範囲のみを含みます。
using namespace Aspose::Cells;
int main() {
Aspose::Cells::Startup();
std::string dataDir = "data/";
Workbook wb(U16String((dataDir + "book1.xls").c_str()));
int sheetCount = wb.GetWorksheets().GetCount();
for (int i = 0; i < sheetCount; ++i) {
Worksheet sourceSheet = wb.GetWorksheets().Get(i);
U16String sheetName = sourceSheet.GetName();
Workbook destWorkbook;
int destIndex = destWorkbook.GetWorksheets().Add();
Worksheet destSheet = destWorkbook.GetWorksheets().Get(destIndex);
destSheet.SetName(sheetName);
destSheet.Copy(sourceSheet);
std::string destFile = dataDir + sheetName.ToUtf8() + ".xls";
destWorkbook.Save(U16String(destFile.c_str()), SaveFormat::Excel97To2003);
}
Aspose::Cells::Cleanup();
return 0;
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.