2017-10-01 4 views
6

Ist es möglich, Excel's Camera Tool mit EPPlus zu verwenden? das heißt: Kopieren Sie programmatisch einen Zellbereich von einem Blatt und fügen Sie sie als Zeichnungsobjekt in ein anderes Blatt ein?EPPlus- und Excel-Kameratool

Update:

Ich bemerkte, dass einfach die Excel-Kamera-Werkzeug ein Bild mit einer Formel erzeugt. Die Formel ist der Bereich der Zellen, die von Excel beobachtet/beobachtet werden sollen. Wenn eine dieser Zellen sich ändert, wird das Bild von Excel aktualisiert.

Aber mit EPPlus ist nicht möglich, eine Formel auf ein Bildobjekt zu injizieren, zum Beispiel:

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 

Jede Abhilfe?

+0

Meine Meinung ist, dass es mit EPPlus nicht möglich ist (ohne den Quellcode zu verändern), weil es doesn nur weiß nichts über das Kamerawerkzeug und gibt beim Speichern der Datei kein XML aus. – Evk

Antwort

1

Schlechte Nachrichten, wenn ich ein VBA-Makro aufzeichnen und wiederholen, funktioniert es nicht. Dies ist die Syntax, die generiert wird:

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 

Arbeiten mit Bildern in Excel über die Automatisierung ist begrenzt. Sie sind ziemlich beschränkt auf Formen (oder Schauder - Zwischenablage):

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 

Was ich vorschlage, ist ein Screenshot von der ausgewählten Zelle erstellen und es auf diese Weise umgehen.

'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 

Ich hoffe, dass das oben Genügende ist, um Ihnen zu helfen, es in EPPPlus zu arbeiten.

ps bis C# Konvertieren von VBA ist wirklich einfach, und es sollte trivial Umwandlung der oben EPPPlus sein: https://stackoverflow.com/a/34055947/495455

+0

Außer EPPlus arbeitet mit Office-Open-XML, nicht mit Excel. – Evk

+0

Ich weiß, ok gib mir etwas Zeit und ich werde es umwandeln. –