いくつかの写真(ファイルからの写真を埋め込む)を含むスプレッドシートを作成したいと思っており、EPPlus(すばらしいライブラリのように見えます)を見始めました。
ただし、画像はセルに関連付けられていないようです。x、y座標に関連付けられているようです。
EPPlusまたは他の方法でセルを画像に設定する(そしてセルのサイズを操作する)方法はありますか?
SetPosition
私の誤解...
これが私が周りを見回したときに見つけたコメントです:
どのバージョンのExcelでも、セルに画像を挿入することはできません。写真はワークシートに挿入され、常に浮きます。画像のプロパティの1つを「セルで移動およびサイズ変更」に設定できますが、これは、下にある行と列が挿入、削除、またはサイズ変更された場合にのみ画像を移動または拡大します。画像をセルに限定するものではありません。
したがって、プロパティを適切に設定する必要があるかもしれません。
プログラムでこれを行うことができれば、私はすべて準備ができています
編集
次のコードは、私が望む/必要なことをほぼ実行します。
写真を挿入する前に、オーバーレイするセルの幅と高さを適切なサイズに設定したことに注意してください。
private static void AddImage(ExcelWorksheet ws, int rowIndex, String imageFile)
{
ExcelPicture picture = null;
Bitmap image = new Bitmap(imageFile);
if (image != null)
{
picture = ws.Drawings.AddPicture("pic" + rowIndex.ToString(), image);
picture.From.Column = 0;
picture.From.Row = rowIndex-1;
picture.SetSize(320, 240);
}
}
画像を挿入してから調整し、適切なセルの.Top
と.Left
に揃えることができます。写真と同じ単位を使用してセルの行を設定できます(最大の高さはありますが)。列のは幅のテキスト文字の単位であるため、私が行うことは次のようになります。.Top
.Left
.RowHeight
.height
.ColumnWidth
myColumn.ColumnWidth = myColumn.ColumnWidth / myColumn.Width * myPicture.Width
初めて設定したとき.ColumnWidth
に正確に設定されないことがあるので、2回実行します。
Excel自体ではそれができないと思います。Excelワークシートに画像を追加すると、それはフローティングオブジェクトであり、特定のセルに固定されません。
ドキュメントに記載されているように、 valueの設定でEPPLUS
可能になるはずです。EditAs
TwoCell
picture.EditAs = eEditAs.TwoCell;
「現在の図面を移動およびサイズ変更して、行と列のアンカーを維持することを指定します(つまり、オブジェクトは実際の行と列にアンカーされます)。」