Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
ビジュアルレポート、製品カタログ、社員ディレクトリ、ダッシュボード、在庫リストとして機能するスプレッドシートを設計する際、画像を単一のセルにぴったり合わせることは一般的な要件です。多くのセルにわたって画像を伸ばしたり、ワークシート上に緩く配置したりする代わりに、所有するセルと整列するクリーンなセル紐づきの画像が必要になる場合があります。 Aspose.Cells はこのシナリオを 2 つの補完的な方法でサポートします。
Picture をワークシートに追加し、その Placement を MoveAndSize に設定し、アンカーセル (UpperLeftRow、UpperLeftColumn、LowerRightRow、LowerRightColumn) を調整して、画像がちょうど 1 つのセルを覆うようにします。EmbeddedImage プロパティに割り当てます。画像はセルの表示領域に合わせて自動的に拡大縮小され、セルと一緒に移動します。
この記事の残りでは両方の方法を順に説明し、関連する API を解説し、コードでの使用方法を示します。フローティング画像はワークシートの描画レイヤーに存在する Picture オブジェクトです。単一セルの一部ではありませんが、セル範囲にアンカーされます。画像のアンカーセル (左上隅と右下隅) がワークシート上でのその視覚的な範囲を決定します。デフォルトでは、新しく追加された画像は複数のセルにまたがります。
フローティング画像を ちょうど 1 つのセル を覆うようにするには、次の手順が必要です。
worksheet.getPictures().add(int row, int column, InputStream stream) を使用して画像を追加します。これにより、新しい画像が指定されたセルにアンカーされます。picture.setPlacement(PlacementType.MOVE_AND_SIZE) を設定し、ユーザーが列幅または行の高さを変更したときに、画像が下のセルと一緒に移動およびサイズ変更されるようにします。画像のアンカーは、4 つのゼロベースのインデックスプロパティによって定義されます。
picture.setUpperLeftRow(int) — 画像の上端の行インデックス。picture.setUpperLeftColumn(int) — 画像の左端の列インデックス。picture.setLowerRightRow(int) — 画像の下端の行インデックス。画像の下端を行 r の下端に配置するには、これを r + 1 に設定します。picture.setLowerRightColumn(int) — 画像の右端の列インデックス。画像の右端を列 c の右端に配置するには、これを c + 1 に設定します。Aspose.Cells における行と列のインデックスは ゼロベース です。セル C6 の行インデックスは 5、列インデックスは 2 です。右下アンカーにおけるオフバイワンエラーは、隣接するセルにはみ出して見える画像の最も一般的な原因です。
Picture.Placement は PlacementType 型の列挙型であり、ユーザーが下の行または列のサイズを変更したときの画像の動作を制御します。単一セル画像に対して推奨される値は PlacementType.MoveAndSize です。これにより、画像が下のセルと一緒に移動およびサイズ変更され、正確な適合が維持されます。
Workbook を作成するか、既存のものを開きます。workbook.getWorksheets().get(0) から対象の Worksheet にアクセスします。InputStream に開きます (たとえば、FileInputStream を使用します)。これにより、ストリームが適切に閉じられます。worksheet.getPictures().add(5, 2, stream) を呼び出して、セル C6 にアンカーされた画像を追加します。返された Picture 参照を取得します。UpperLeftRow = 5、UpperLeftColumn = 2、LowerRightRow = 6、LowerRightColumn = 3。picture.setPlacement(PlacementType.MOVE_AND_SIZE) を設定して、列または行のサイズが変更されたときに画像が C6 と位置を揃えたままになるようにします。.xlsx ファイルとしてディスクに保存します。
次のコードは完全な方法を示しています。const AsposeCells = require("aspose.cells-node");
var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
var picIndex = worksheet.getPictures().add(5, 2, "logo.png");
var picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(AsposeCells.PlacementType.MoveAndSize);
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Aspose.Cells は、セルに束縛された画像のためのよりシンプルなメカニズムも公開しています。それが Cell.EmbeddedImage プロパティです。このプロパティに画像のバイト列を割り当てることで、画像はインラインコンテンツのようにセル自体に付加されます。
Cell.EmbeddedImage は「セル内に存在する画像」という単純な目的の場合に最も簡潔な選択肢となります。Workbook を作成するか、既存のものを開きます。workbook.getWorksheets().get(0) から対象の Worksheet にアクセスします。java.nio.file.Files の Files.readAllBytes を使用します)。worksheet.getCells().get("C6") または worksheet.getCells().get(5, 2) のいずれかを使用します。cell.setEmbeddedImage(bytes) を通じてバイト配列をセルの EmbeddedImage プロパティに割り当てます。.xlsx ファイルとしてディスクに保存します。
次のコードは完全な方法を示しています。const AsposeCells = require("aspose.cells-node");
const fs = require("fs");
var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// 対象セル C6 を取得
var cell = worksheet.getCells().get("C6");
// 画像ファイルをバイト配列に読み込む
var imageData = fs.readFileSync("logo.png");
// 画像をセルに直接埋め込む
cell.setEmbeddedImage(imageData);
// 埋め込まれた画像をより見やすくするため、必要に応じて行の高さと列の幅を調整する
worksheet.getCells().setColumnWidth(2, 30); // 列 C (インデックス 2)
worksheet.getCells().setRowHeight(5, 100); // 行 6 (インデックス 5)
// 結果のワークブックを .xlsx ファイルとして保存する
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
両方の方法は単一セル内に収まる画像を生成しますが、画像の保存方法と動作が異なります。
PictureCollection を扱うコードとのレガシー互換性が必要な場合。Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.