2012-06-19 25 views
5

Görevim, URL'den resim excel çalışma sayfasında belirli bir hücreye yerleştirmektir. Bunu yapmak için C# ile NetOffice kullanıyorum.Excel hücresine resim nasıl eklenir?

Asıl sorunum, bir resmi tam olarak hücreye yerleştirmenin bir yolunu bulamıyorum. Sheet.Shapes.AddPicture() yöntemini kullandığımda, fotoğrafımı nereye koyacağımı koordine etmem gerekiyor. Elbette bununla ilgili bir sorunum yok (bir çeşit geçici çözüm yarattım), ancak, bu problemi çözme yaklaşımımın doğru olup olmadığını veya hücreye görüntü ekleyebileceğim başka bir yöntem olup olmadığını sormak istiyorum.

Doug Glancy Excel bir hücrenin "içeride" olması için bir resim düşünün olmadığını belirten yeterli olsa da aslında
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

Bildiğim kadarıyla, görüntüler bir çalışma sayfasındaki hücrelerin içine doğrudan girmez. Bu bir elektronik tabloya bir görüntü ekleyerek kanıtlanmıştır - bu, küçük resimler, şekiller vb. Ile aynı hücreler üzerinde sorta "yüzer" olduğunu fark eder. –

+1

Resimleri hücrelere ekleyemezsiniz. Onları Hücre ile hizalama yaklaşımınız, Üst ve Sol özellikleri vb. Kullanarak, doğru olanıdır. –

cevap

1

, bir resim olabilir belirli bir hücre ile ilişkili: Burada

benim geçici çözüm olduğunu ve doğru yerleştirilirse sezgisel olarak hareket edecektir. Örneğin, bir evler listeniz olduğunu varsayalım. Sütunlar A-Y, ev hakkında çeşitli bilgilere sahiptir ve Z sütunu, evin bir resmine sahiptir. Resimler doğru hücreler ile doğru bir şekilde ilişkilendirilmişse, sıralama, kesme, kopyalama, aralıkları yapıştırdığınızda resimler beklediğiniz gibi davranır.

  1. resim tamamen hücrenin içinde olmalıdır: Düzgün evler işlemek için Excel için Amacıyla

    , iki kriterlerini karşılamak zorundadır. Yukarıdaki kodunuzu kullanarak, ilk önce resmi sahip olduğunuz gibi yerleştirirsiniz ve ardından, en az resmin yüksekliğine ve genişliğine eşit olacak şekilde hücrenin satır yüksekliğini ve sütun genişliğini ayarlarsınız.

  2. shape.Placement özelliği, xlMove veya xlMoveAndSize olarak ayarlanmalıdır. resim hücrenin içine tamamen ve .PlacementxlMove veya xlMoveAndSize sonra her konteyner hücre hamle, resim ayarlanırsa xlFreeFloating (3) Object is free floating. xlMove (2) Object is moved with the cells. xlMoveAndSize (1) Object is moved and sized with the cells.

: MS belgelerine bakıldığında, yerleştirme özelliği aşağıdakilerden biri olabilir onunla hareket edecek. .Placement, xlMoveandSize olarak ayarlanmışsa, görüntü, hücre genişliği veya yüksekliği değiştirildiğinde, genişler veya daralır. Bu, yardımcı olabilir çünkü resmin hücrenin sınırları içinde kalmasını sağlar. xlMoveandSize kullanırsanız, sütun genişlikleri veya satır yükseklikleri ayarlandığında resmin bozulmasını önlemek için ShapeRange.LockAspectRatio = msoTrue ayarını da düşünebilirsiniz.

Evet, Virginia, siz numaralı telefonu bir hücreye ekleyebilirsiniz. Sadece dikkatlice yerleştirdiğinizden emin olun.

İlgili konular