2017-10-01 13 views
6

EPPlusでExcelのカメラツールを使用することはできますか?つまり、あるシートからセルの範囲をプログラム的にコピーし、描画オブジェクトとして別のシートに貼り付けますか?EPPlusとExcelのカメラツール

更新:

私は、Excelのカメラツールは、単に式で画像を作成することに気づきました。数式は、Excelで監視/監視するセルの範囲です。これらのセルのいずれかが変更された場合、画像はExcelによって更新されます。

しかしEPPlusでは、例えば、Pictureオブジェクトに式を注入することはできません。

var picture = worksheet.Drawings.AddPicture("picture", (FileInfo)null); 
picture.SetPosition(1, 0, 1, 0); 
picture.Formula = "A1:D9"; // ...there is no "Formula" property for ExcelPicture object 

任意の回避策?

+0

私の意見は、それがちょうどdoesnのためには、(そのソースコードを変更せずに)EPPlusでは不可能だということですファイルを保存するときにカメラツールについて知っていて、必要なXMLを出しません。 – Evk

答えて

1

VBAマクロを記録して再生すると悪いニュースになりますが、動作しません。これは生成された構文です:

Range("A2").Select 
Selection.Copy 
ActiveSheet.Shapes.AddShape(, 355.5, 32.25, 72#, 72#).Select 
ActiveSheet.Shapes.Range(Array("Picture 3")).Select 
Application.CutCopyMode = False 

自動化によるExcelでの画像の操作は制限されています。

Set shp = ws.Shapes.AddPicture("C:\You.png", msoFalse, msoTrue, l, t, w, h) 
shp.Name = strPic 
shp.ScaleHeight Factor:=1, RelativeToOriginalSize:=msoTrue 
shp.ScaleWidth Factor:=1, RelativeToOriginalSize:=msoTrue 

は、私は何を示唆していますと、選択したセルのスクリーンショットを作成し、そのように回避策です: - あなたはかなりシェイプ(クリップボードまたは身震い)に制限されています。

'Select the cells you want to copy to image 
Range("A2").Select 
'Copy selected cells contents to clipboard as image 
Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture 
'Choose destination 
Range("B3").Select 
'Paste 
ActiveSheet.Paste 

'Restore previous clipboard to memory 

このようにすれば、EPPPlusで作業できるようになります。 C#2にVBAを変換する

PSは本当に簡単であり、それはEPPPlusに上記の変換 些細なことする必要がありますhttps://stackoverflow.com/a/34055947/495455

+0

EPPlusはoffice open xmlで動作しますが、Excel with interopでは動作しません。 – Evk

+0

私は知っている、私にしばらく時間を与えて、私はそれを変換します。 –