2012-06-19 133 views
5

Mi tarea es colocar una imagen desde la URL en una celda determinada en la hoja de cálculo de Excel. Estoy usando NetOffice con C# para hacer esto.¿Cómo insertar una imagen en la celda de Excel?

Mi principal problema es que no puedo encontrar una forma de insertar una imagen exactamente en la celda. Cuando uso Sheet.Shapes.AddPicture(), tengo que calcular las coordenadas donde poner mi imagen. Por supuesto, no tengo ningún problema con eso (creé algún tipo de solución), sin embargo, me gustaría preguntar si mi enfoque para resolver este problema es correcto o si hay algún otro método donde pueda insertar una imagen en la celda.

Aquí está mi solución:

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

Hasta donde yo sé, las imágenes no van directamente dentro de las celdas en una hoja de trabajo. Esto se evidencia insertando una imagen en una hoja de cálculo. Observe que está sorta "flota" encima de las celdas, lo mismo con imágenes prediseñadas, formas, etc. –

+1

No puede insertar imágenes en las celdas. Su enfoque de alinearlos con la celda, mediante el uso de las propiedades Superior e Izquierda, etc., es el correcto. –

Respuesta

1

Aunque Doug Glancy tiene razón al afirmar que Excel no se considera una imagen como "dentro" de una célula, una imagen puede ser asociado con una célula particular y actuará intuitivamente si se coloca correctamente.

Por ejemplo, supongamos que tiene una lista de casas. Las columnas A-Y tienen información diversa sobre la casa, y la columna Z tiene una imagen de la casa. Si las imágenes están asociadas correctamente con las celdas adecuadas, cuando clasifique, corte, copie y pegue rangos, las imágenes se comportarán de la manera que usted esperaría.

Para que Excel para manipular adecuadamente las casas, tienen que cumplir con dos requisitos:

  1. La imagen debe ser totalmente en el interior de la célula. Usando su código anterior, primero debe colocar la imagen tal como la tiene, y luego ajustar la altura de la fila y el ancho de la columna para que sea al menos igual al alto y ancho de la imagen.

  2. La propiedad shape.Placement debe establecerse en xlMove o xlMoveAndSize. A partir de la documentación de MS, la propiedad de colocación puede ser uno de los siguientes: xlFreeFloating (3) Object is free floating. xlMove (2) Object is moved with the cells. xlMoveAndSize (1) Object is moved and sized with the cells.

Si la imagen es completamente en el interior de la célula y .Placement se establece en xlMove o xlMoveAndSize, entonces siempre que las células de movimientos de contenedores, el cuadro se moverá con eso. Si .Placement está establecido en xlMoveandSize, la imagen se expandirá o contraerá cada vez que se modifique el ancho o la altura de la celda. Esto puede ser útil porque asegura que la imagen permanezca dentro de los límites de la celda. Si usa xlMoveandSize, también puede considerar configurar ShapeRange.LockAspectRatio = msoTrue para evitar que la imagen se distorsione cuando se ajusta el ancho de las columnas o las alturas de las filas.

Entonces sí, Virginia, usted puede colocar una imagen en una celda. Solo asegúrate de colocarlo con cuidado.

Cuestiones relacionadas