Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
1 つのセルにぴったり画像を合わせることは、ビジュアルレポート、商品カタログ、従業員ディレクトリ、ダッシュボード、在庫リストとして機能するスプレッドシートをデザインする際の一般的な要件です。多くのセルにまたがるように画像を引き伸ばしたり、ワークシート上に緩く配置したりする代わりに、それを所有するセルと整合性が保たれる、クリーンでセルに束縛された画像が必要になる場合があります。 Aspose.Cells では、このシナリオを 2 つの補完的な方法でサポートしています。
Picture を追加し、その placement を MoveAndSize に設定し、画像が正確に 1 つのセルを覆うようにアンカーセル (upperLeftRow、upperLeftColumn、lowerRightRow、lowerRightColumn) を調整します。embeddedImage プロパティに割り当てます。画像はセルの表示領域に合わせて自動的に拡大縮小され、セルと一緒に移動します。
この記事の残りの部分では、両方の方法を順に説明し、関連する API について説明し、コードでの使用方法を示します。フローティング画像は、ワークシートの描画レイヤーに存在する Picture オブジェクトです。単一のセルの一部ではありませんが、セル範囲にアンカーされています。画像のアンカーセル (左上と右下の角) は、ワークシート上の視覚的な範囲を決定します。デフォルトでは、新しく追加された画像は複数のセルにまたがります。
フローティング画像が正確に 1 つのセルを覆うようにするには、次の手順を実行する必要があります。
worksheet.pictures.add(row, column, stream) を使用して画像を追加し、新しい画像を指定されたセルにアンカーします。picture.placement を PlacementType.MoveAndSize に設定します。画像のアンカーは、4 つのゼロベースのインデックスプロパティによって定義されます。
picture.upperLeftRow — 画像の上端の行インデックス。picture.upperLeftColumn — 画像の左端の列インデックス。picture.lowerRightRow — 画像の下端の行インデックス。画像の下端を行 r の下に配置するには、これを r + 1 に設定します。picture.lowerRightColumn — 画像の右端の列インデックス。画像の右端を列 c の右に配置するには、これを c + 1 に設定します。Aspose.Cells の行と列のインデックスはゼロベースです。セル C6 の行インデックスは 5、列インデックスは 2 です。右下アンカーのオフバイワンエラー (1 単位のずれ) は、画像が隣接するセルに重なって見える最も一般的な原因です。
picture.placement は PlacementType 型の列挙型で、ユーザーが下にある行または列のサイズを変更したときの画像の動作を制御します。単一セル画像に推奨される値は PlacementType.MoveAndSize で、これにより画像が基になるセルと一緒に移動およびサイズ変更され、正確なフィッティングが維持されます。
Workbook を作成します (または既存のものを開きます)。workbook.worksheets[0] から対象の Worksheet にアクセスします。worksheet.pictures.add(5, 2, stream) を呼び出して、セル C6 にアンカーされた画像を追加します。返された Picture 参照を取得します。upperLeftRow = 5、upperLeftColumn = 2、lowerRightRow = 6、lowerRightColumn = 3。picture.placement = PlacementType.MoveAndSize を設定します。.xlsx ファイルとしてディスクに保存します。
次のコードは完全な方法を示しています。const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const 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.worksheets[0] から対象の Worksheet にアクセスします。fs.readFileSync) を使用して、ディスクから画像ファイルを Buffer またはバイト配列に読み込みます。worksheet.cells["C6"] または worksheet.cells[5, 2] のいずれかを使用します。embeddedImage プロパティに割り当てます。.xlsx ファイルとしてディスクに保存します。
次のコードは完全な方法を示しています。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);
両方の方法で 1 つのセル内に収まる画像が生成されますが、画像の保存方法と動作が異なります。
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.