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 インスタンス(空のワークブック)を作成します。Worksheet を追加し(またはデフォルトの最初のワークシートを使用し)、意味のある名前を割り当てます。理想的には、ソースワークシートの Name プロパティと同じ名前にします。Cells コレクションのセルを反復処理し、その値を宛先ワークシートの対応するセルに書き込むことによって実行できます。または、Cells.copy メソッドを使用して範囲全体を一度に転送することもできます。dataDir + worksheet.Name + ".xls")を構築し、生成された各ファイルが固有の名前を持つようにします。Workbook.save メソッドを呼び出して、ファイルをディスクに書き込みます。import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook
from asposecells.api import Workbook, Worksheet, Cells, Range, SaveFormat
dataDir = "data/"
workbook = Workbook(dataDir + "book1.xls")
for i in range(workbook.getWorksheets().getCount()):
sourceSheet = workbook.getWorksheets().get(i)
sheetName = sourceSheet.getName()
<span class="n">destWorkbook</span> <span class="o">=</span> <span class="n">Workbook</span><span class="p">()</span>
<span class="n">destIndex</span> <span class="o">=</span> <span class="n">destWorkbook</span><span class="o">.</span><span class="n">getWorksheets</span><span class="p">()</span><span class="o">.</span><span class="n">add</span><span class="p">()</span>
<span class="n">destSheet</span> <span class="o">=</span> <span class="n">destWorkbook</span><span class="o">.</span><span class="n">getWorksheets</span><span class="p">()</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">destIndex</span><span class="p">)</span>
<span class="n">destSheet</span><span class="o">.</span><span class="n">setName</span><span class="p">(</span><span class="n">sheetName</span><span class="p">)</span>
<span class="n">destSheet</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">sourceSheet</span><span class="p">)</span>
<span class="n">destFile</span> <span class="o">=</span> <span class="n">dataDir</span> <span class="o">+</span> <span class="n">sheetName</span> <span class="o">+</span> <span class="s2">".xls"</span>
<span class="n">destWorkbook</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">destFile</span><span class="p">,</span> <span class="n">SaveFormat</span><span class="o">.</span><span class="n">Excel97To2003</span><span class="p">)</span>
jpype.shutdownJVM()
期待される出力は、データディレクトリ内の新しいファイルのセットであり、ソースワークブックからワークシートごとに 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 から始まる、抽出された範囲のみを含みます。
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.