2012-06-19 7 views
5

Meine Aufgabe ist es, Bild von URL in bestimmte Zelle in Excel-Arbeitsblatt zu setzen. Ich benutze NetOffice mit C#, um dies zu tun.Wie Bild in Excel-Zelle einfügen?

Mein Hauptproblem ist jedoch, dass ich keinen Weg finden kann, ein Bild genau in die Zelle einzufügen. Wenn ich Sheet.Shapes.AddPicture() verwende, muss ich Koordinaten berechnen, wo ich mein Bild ablegen soll. Natürlich habe ich damit kein Problem (ich habe eine Art Workaround erstellt), aber ich würde gerne fragen, ob mein Ansatz zur Lösung dieses Problems richtig ist oder ob es eine andere Methode gibt, mit der ich ein Bild in eine Zelle einfügen kann.

Hier ist meine Abhilfe:

var floatLeft = FloatLeftPixelsCalculation(rowNumber); 
var floatTop = FloatTopPixelsCalculation(rowNumber); 
Worksheet.Shapes.AddPicture(urlCellValue, MsoTriState.msoFalse, MsoTriState.msoTrue, floatLeft, floatTop, PictureWidth, PictureHeight); 

public float FloatTopPixelsCalculation(int rowNumber) 
     { 
      float floatTop = 0; 
      for (var rNumber = 1; rNumber < rowNumber; rNumber++) 
      { 
       var cellHeight = Convert.ToSingle(Worksheet.Cells[rNumber, ColumnIndex].RowHeight); 
       floatTop = floatTop + cellHeight; 
      } 

      return floatTop; 
     } 

     public float FloatLeftPixelsCalculation(int rowNumber) 
     { 
      float floatLeft = 0; 
      for (var columnNumber = 1; columnNumber < ColumnIndex; columnNumber++) 
      { 
       var cellWidth = Convert.ToSingle(Worksheet.Cells[rowNumber, columnNumber].ColumnWidth); 
       floatLeft = floatLeft + cellWidth; 
      } 

      return floatLeft; 
     } 
+0

Soweit ich weiß, Bilder gehen nicht direkt in Zellen in einem Arbeitsblatt. Dies wird durch das Einfügen eines Bildes in eine Tabellenkalkulation demonstriert - ein Hinweis, der auf den Zellen "schwebt" - gleiches gilt für Cliparts, Formen usw. –

+1

Sie können keine Bilder in Zellen einfügen. Ihr Ansatz, sie mit der Zelle auszurichten, indem Sie die Eigenschaften Oben und Links usw. verwenden, ist die richtige Methode. –

Antwort

1

Obwohl Doug Glancy in die besagt, richtig ist, dass Excel zu sein „innerhalb“ einer Zelle nicht ein Bild betrachten, ein Bild zugeordnet mit einer bestimmten Zelle sein kann und wird intuitiv handeln, wenn sie richtig platziert ist.

Zum Beispiel, sagen Sie, Sie haben eine Liste von Häusern. Spalten A-Y haben verschiedene Informationen über das Haus und Spalte Z hat ein Bild des Hauses. Wenn die Bilder den richtigen Zellen korrekt zugeordnet sind, verhalten sich die Bilder beim Sortieren, Ausschneiden, Kopieren und Einfügen von Bereichen wie erwartet.

Damit Excel die Häuser richtig zu manipulieren, müssen sie zwei Kriterien erfüllen:

  1. Das Bild im Inneren der Zelle vollständig sein muss. Mit dem obigen Code würden Sie das Bild zuerst so platzieren, wie Sie es haben, und dann die Zeilenhöhe und Spaltenbreite der Zelle so anpassen, dass sie mindestens der Höhe und Breite des Bildes entspricht.

  2. Die Eigenschaft shape.Placement muss entweder auf xlMove oder xlMoveAndSize festgelegt werden. Von MS-Dokumentation kann die Platzierung Eigenschaft eine der folgenden sein: xlFreeFloating (3) Object is free floating. xlMove (2) Object is moved with the cells. xlMoveAndSize (1) Object is moved and sized with the cells.

Wenn das Bild vollständig im Innern der Zelle ist und .Placement ist auf xlMove oder xlMoveAndSize, dann, wenn die Behälterzelle bewegt, wird das Bild wird sich damit bewegen. Wenn .Placement auf xlMoveandSize festgelegt ist, wird das Bild immer dann vergrößert oder verkleinert, wenn die Zellenbreite oder -höhe geändert wird. Dies kann hilfreich sein, da es sicherstellt, dass das Bild innerhalb der Zellengrenzen bleibt. Wenn Sie xlMoveandSize verwenden, sollten Sie auch die Einstellung ShapeRange.LockAspectRatio = msoTrue in Betracht ziehen, um zu verhindern, dass das Bild verzerrt wird, wenn Spaltenbreiten oder Zeilenhöhen angepasst werden.

Also ja, Virginia, du kann ein Bild in eine Zelle platzieren. Stellen Sie nur sicher, dass Sie es sorgfältig platzieren.