Puedo insertar una imagen en mi archivo de Excel usando jxl usando sheet.addImage(WritableImage obj)
. Mi problema es que se extiende según los argumentos de WritableImage
. Me pregunto si hay una manera para que la imagen que inserto no se estire como si insertara una imagen de 200x200 que aparecería en la hoja como 200x200.Inserte la imagen en el archivo de Excel usando JXL sin estirarla
Respuesta
Por mucho que esto me haya molestado acerca de jxl, nunca he encontrado una manera de insertar una imagen sin asociar la relación de aspecto a las celdas en lugar de píxeles/pulgadas/cualquier unidad de medida estándar, y he hecho decente investigación en el pasado al hacerlo.
Lo mejor que puede hacer es adaptar las imágenes a la altura/anchura de las celdas que lo está insertando en, o incluso mejor, establezca la célula anchura/altura de las células que están poniendo la imagen en.
Desde el JExcel FAQ- http://jexcelapi.sourceforge.net/resources/faq/
private static final double CELL_DEFAULT_HEIGHT = 17;
private static final double CELL_DEFAULT_WIDTH = 64;
File imageFile = new File(GIF_OR_JPG_IMAGE_FILE);
BufferedImage input = ImageIO.read(imageFile);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(input, "PNG", baos);
sheet.addImage(new WritableImage(1,1,input.getWidth()/CELL_DEFAULT_WIDTH,
input.getHeight()/CELL_DEFAULT_HEIGHT,baos.toByteArray()));
para mantener la relación de aspecto, usted también desea establecer el WritableImage a no cambiar el tamaño si el usuario cambia la altura de la fila o el ancho de la columna. Hacer esto con cualquiera de los siguientes (su preferencia basa en si desea que el anclaje de imagen bloqueado o se mueva con el cambio de tamaño):
WritableImage.MOVE_WITH_CELLS;
WritableImage.NO_MOVE_OR_SIZE_WITH_CELLS;
Gracias por su respuesta! Creo que no puedo aplicarlo a mi situación actual, ya que el ancho y la altura de la columna están sujetos a la longitud de la palabra más larga en la misma columna donde necesito poner una imagen. Pero aprecio mucho tu respuesta. – Jemp
No hay problema, esta situación me ha pasado antes también. Lo anterior funciona SI se puede arreglar el ancho/alto de las celdas, pero en el caso de que no se pueda (como cuando se establece AUTOSIZE en verdadero en las columnas), no he encontrado la manera de hacerlo. Si encuentra una forma de hacerlo en jxl, asegúrese de publicar aquí, ya que puede ayudar a otros. – king14nyr
@ king14nyr encontró una solución, por favor publíquela thankx – shareef
En realidad, esto es posible. Supongamos que el ancho de la imagen que desea incluir es 4000. A continuación, haga lo siguiente:
CellView cv = excelSheetTemp.getColumnView(0);
//get the width of the column where you want to insert the picture
int width = forLogo.getSize();
//if the width is less than the size you want, set the column width to
//the width. This will ensure that your image does not shrink
if (width < 4000) {
forLogo.setSize(4000);
excelSheetTemp.setColumnView(0, cv);
width = 4000;
}
double c = 4000/width;
WritableImage im = new WritableImage(0, 1, c, 3, the image file);
excelSheetTemp.addImage(im);
- 1. ¿Cómo creo un nuevo archivo de Excel usando JXL?
- 2. Agregar datos a un archivo de Excel usando jxl
- 3. ¿Cómo puedo cambiar el tamaño de una imagen sin estirarla?
- 4. Editar archivos de Excel existentes usando jxl api/Apache POI
- 5. JXL y Timezone escribiendo un Excel
- 6. JXL y Apache POI analizando Excel con objetos de imagen adjuntos
- 7. fondo de la imagen: cómo repetir la imagen como fondo en lugar de estirarla
- 8. SQL Server Inserte Sin EN
- 9. Cómo crear una hoja de Excel con alineación de derecha a izquierda usando JXL
- 10. Crear archivo de Excel en Java
- 11. Obtener una imagen y su posición desde el archivo de Excel usando Apache POI
- 12. Formato de celda JXL
- 13. JXL soluciona el problema #VALOR
- 14. Obtener dimensiones de la imagen sin leer todo el archivo
- 15. Cómo escribir números formateados como números en JExcel (jxl)
- 16. Lea el archivo excel xlsx usando simplexlsx en php
- 17. Inserte archivos estáticos literalmente en plantillas Jinja sin analizarlos
- 18. Inserte texto en negrita en Word usando VBA
- 19. Inserte un trozo de texto de una imagen PNG
- 20. archivo EXE Insertar en el archivo Excel
- 21. Inserte los valores de NA en el marco de datos
- 22. Tinte de imagen usando CSS sin superposición
- 23. ¿Cómo modificar el archivo Excel existente usando PHP?
- 24. vim: inserte el texto seleccionado en la línea de comando?
- 25. Cómo reducir el tamaño del archivo de imagen usando PIL
- 26. Descargar el archivo EXCEL desde la página ASP.NET sin Generar archivo físico en el servidor (On The Fly)
- 27. Lectura de Excel con JXL, recuento de células por fila cambiando entre las filas
- 28. Insertar imagen en el archivo xml usando C#
- 29. ¿Cómo insertar una imagen en la celda de Excel?
- 30. Cerrar la aplicación de Excel usando VBA
@ king14nyr le parecieron una solución publicarlo Thankx – shareef