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をMOVE_AND_SIZEに設定し、アンカーセル(upper_left_row、upper_left_column、lower_right_row、lower_right_column)を調整して、画像が正確に1つのセルを覆うようにします。embedded_imageプロパティに割り当てます。画像はセルの表示領域に合わせて自動的にスケールされ、セルと一緒に移動します。
この記事の残りの部分では、両方のアプローチについて説明し、関連するAPIを紹介し、コードでの使用方法を示します。フローティング画像は、ワークシートの描画レイヤーに存在するPictureオブジェクトです。単一セルの一部ではありませんが、セル範囲にアンカーされています。画像のアンカーセル(左上と右下の角)は、ワークシート上の視覚的な範囲を決定します。デフォルトでは、新しく追加された画像は複数のセルにまたがります。
フローティング画像を正確に1つのセルに覆わせるには、次の手順が必要です。
Worksheet.pictures.add(row, column, stream)を使用して画像を追加します。これにより、新しい画像が指定されたセルにアンカーされます。Picture.placementをPlacementType.MOVE_AND_SIZEに設定し、ユーザーが列幅または行の高さを変更したときに画像が基になるセルと一緒に移動およびサイズ変更されるようにします。画像のアンカーは、4つのゼロベースのインデックスプロパティによって定義されます。
Picture.upper_left_row — 画像の上端の行インデックス。Picture.upper_left_column — 画像の左端の列インデックス。Picture.lower_right_row — 画像の下端の行インデックス。画像の下端を行rの下部に配置するには、これをr + 1に設定します。Picture.lower_right_column — 画像の右端の列インデックス。画像の右端を列cの右側に配置するには、これをc + 1に設定します。Aspose.Cellsの行と列のインデックスはゼロベースです。セルC6の行インデックスは5、列インデックスは2です。右下アンカーでの1つ違いのエラーは、画像が隣接セルに重なって表示される最も一般的な原因です。
Picture.placementはPlacementType型の列挙型で、ユーザーが下の行または列をサイズ変更したときの画像の動作を制御します。単一セル画像に対する推奨値はPlacementType.MOVE_AND_SIZEで、これにより画像が基になるセルと一緒に移動およびサイズ変更され、正確なフィット感が維持されます。
Workbookを作成します(または既存のものを開きます)。workbook.worksheets[0]からターゲットのWorksheetにアクセスします。withブロックを使用して、画像ファイルをディスクからファイルストリーム(またはBytesIOオブジェクト)に開きます。これにより、ストリームが適切に破棄されます。worksheet.pictures.add(5, 2, stream)を呼び出して、セルC6にアンカーされた画像を追加します。返されたPicture参照を取得します。upper_left_row = 5、upper_left_column = 2、lower_right_row = 6、lower_right_column = 3。picture.placement = PlacementType.MOVE_AND_SIZEを設定し、列または行がサイズ変更されたときに画像をC6に揃えたままにします。.xlsxファイルとしてディスクに保存します。
次のコードは、完全なアプローチを示しています。import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
with open("logo.png", "rb") as fs:
pic_index = worksheet.pictures.add(5, 2, fs)
picture = worksheet.pictures[pic_index]
picture.upper_left_row = 5
picture.upper_left_column = 2
picture.lower_right_row = 6
picture.lower_right_column = 3
picture.placement = ac.PlacementType.MOVE_AND_SIZE
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
Aspose.Cellsは、セルにバインドされた画像のためのよりシンプルなメカニズムも提供しています。Cell.embedded_imageプロパティです。このプロパティに画像のバイトを割り当てると、画像がセル自体に、インラインコンテンツのように添付されます。
Cell.embedded_imageは目標が単に「このセル内に存在する画像」である場合の最も簡潔なオプションになります。Workbookを作成します(または既存のものを開きます)。workbook.worksheets[0]からターゲットのWorksheetにアクセスします。bytesオブジェクトに読み込みます(たとえば、バイナリモードでファイルを開き、.read()を呼び出します)。worksheet.cells["C6"]またはworksheet.cells[5, 2]のいずれかを使用します。embedded_imageプロパティに割り当てます。.xlsxファイルとしてディスクに保存します。
次のコードは、完全なアプローチを示しています。import aspose.cells as ac
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
# Get the target cell C6
cell = worksheet.cells["C6"]
# Read the image file into a byte array
with open("logo.png", "rb") as f:
imageData = f.read()
# Embed the image directly into the cell
cell.embedded_image = imageData
# Optionally adjust row height and column width so the embedded image is more visible
worksheet.cells.set_column_width(2, 30) # Column C (index 2)
worksheet.cells.set_row_height(5, 100) # Row 6 (index 5)
# Save the resulting workbook as an .xlsx file
workbook.save("output.xlsx", ac.SaveFormat.XLSX)
両方のアプローチは単一のセル内に収まる画像を生成しますが、画像の格納方法と動作が異なります。
picturesコレクションで動作するコードとのレガシー互換性が必要な場合。Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.