场景:将Excel中插入图片,效果如下:
问题:1)图片尺寸,在实现过程中可设置图片尺寸大小,或保留原使图片,在设置图片尺寸时最大宽度为255(没有查到为何这样限制)。保留原图,图片尺寸又太大,所以决定先将图片抽点成合适尺寸,然后采用保留原始图片,同时如果想达到图片在特定单元格内除代码处理外需要先将Excel模板单元格的尺寸设置好,方法选中需要设置的行,右键设置行高。
方法一(实现:poi3.10):
InputStream is = new FileInputStream("读入的Excel模板"); HSSFWorkbook wb = new HSSFWorkbook(is); HSSFSheet sheet = (HSSFSheet) wb.getSheetAt(0); ByteArrayOutputStream bos = new ByteArrayOutputStream(); BufferedImage BufferImg = ImageIO.read(new File("插入图片所在的地址")); ImageIO.write(BufferImg, "JPEG", bos); //public HSSFClientAnchor(int dx1,int dy1,int dx2,int dy2,short col1,int row1,short col2,int row2) HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,200,200,(short) 5,4,(short)5,4); HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); patriarch.createPicture(anchor, //wb.addPicture(bos.toByteArray(),wb.PICTURE_TYPE_JPEG)); //根据固定宽度 wb.addPicture(bos.toByteArray(),wb.PICTURE_TYPE_JPEG)).resize(1); //保持原图: OutputStream os = new FileOutputStream("生成的Excel路径"); wb.write(os); is.close(); os.flush(); os.close();
方法二:jxl读取模板,在图片所在列填充图片地址,在读入该Excel将地址转换成图片
//templateFileName excel模板, beans插入到Excel的数据Map, destFileName 输出到的模板, Configuration config = new Configuration(); XLSTransformer transformer = new XLSTransformer(config); transformer.transformXLS(templateFileName, beans, destFileName); InputStream is = new FileInputStream(destFileName); Workbook resultWorkbook = WorkbookFactory.create(is); Iterator rowIter = resultWorkbook.getSheetAt(0).rowIterator(); while (rowIter.hasNext()) { HSSFRow row = (HSSFRow) rowIter.next(); Iterator cellIter = row.cellIterator(); while (cellIter.hasNext()) { HSSFCell cell = (HSSFCell) cellIter.next(); final String IMG_PREFIX = "#IMG#"; if (cell.toString().startsWith(IMG_PREFIX)) { String cellValue = cell.toString(); cell.setCellValue(""); String imagePath = cellValue.replaceFirst(IMG_PREFIX, ""); File imageFile = new File(imagePath); if (imageFile.exists()) { ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); BufferedImage bufferImg = ImageIO.read(imageFile); ImageIO.write(bufferImg, "jpg", byteArrayOut); byte[] imgBytes = byteArrayOut.toByteArray(); int pictureIdx = resultWorkbook.addPicture(imgBytes, Workbook.PICTURE_TYPE_JPEG); CreationHelper helper = resultWorkbook.getCreationHelper(); Drawing drawing = resultWorkbook.getSheetAt(0).createDrawingPatriarch(); ClientAnchor anchor = helper.createClientAnchor(); anchor.setCol1(cell.getColumnIndex()); anchor.setRow1(cell.getRowIndex()); Picture pict = drawing.createPicture(anchor, pictureIdx); pict.resize(); } } } } FileOutputStream fileOut = new FileOutputStream("D:\\333.xls"); resultWorkbook.write(fileOut); fileOut.close();
注意:要在Excel模板中图片所在位置用表达式进行读取:#IMG#${图片路径值}
相关推荐
使用EXCEL插入图片
这个名为"设置Excel插入图片的透明色.rar"的压缩包文件包含了一个名为"25.2.7设置透明色.xls"的工作簿,很显然,它提供了关于如何在Excel中设置图片透明色的教程。现在,让我们深入探讨一下这个知识点。 首先,我们...
在本文中,我们将深入探讨如何使用POI库向Excel工作簿中插入图片。这将涵盖相关的API,步骤以及一些实用技巧。 首先,我们需要理解Excel的内部结构。在Excel文件中,图片是以OLE对象的形式存储的。POI提供了...
以下是对Excel插入图片调整功能的详细解读: 1. 插入图片:首先,用户可以在Excel工作表的任意位置通过“插入”菜单选择“图片”,从本地文件或网络资源中选取图片。图片一旦插入,就可以自由拖动以改变位置,或...
JavaScript 使用ActiveX实现在Excel文件中插入图片
在C#编程环境中,利用Microsoft Office Interop库可以实现向Excel工作簿中插入图片的功能。这个项目"OfficeRedevelopment"就是针对这一需求而设计的,适用于VS2010及更高版本的Visual Studio。下面将详细介绍如何在...
对于图片,我们需要将它们保存到工作簿的目录下,然后在`Excel`中插入超链接指向这些图片。 ```csharp using Excel = Microsoft.Office.Interop.Excel; // 创建Excel应用程序 Excel.Application excelApp = new ...
总结起来,Java实现Excel中插入图片的核心步骤包括:导入Apache POI库,创建并操作工作簿和工作表,读取和创建图片对象,创建绘图工作表,设置图片位置,最后保存工作簿。在实际开发中,可能还需要处理图片格式转换...
Excel VBA 插入图片实例集锦 本文档主要介绍了使用 Excel VBA 来插入图片的实例集锦,涵盖了批量插入图片、合并单元格、删除shape对象、添加图片到形状区域等多个方面的知识点。 插入图片 在 VBA 中,可以使用 `...
功能说明:包含对工作表、单元格的常用操作,重点包含插入图片的功能 属性:普通类 其他:需要在工程中添加COM组件的引用:Microsoft Excel 12.0 Object Library (注:12.0是Excel2007的版本号,如果是2003...
在Excel 2007中插入图片是进行数据可视化或创建报告时常用的功能。这个过程简单易行,但包含了一些可以提升工作效率和效果的小技巧。下面将详细介绍如何在Excel 2007中插入图片,并探讨相关的知识点。 首先,打开...
### C# 向 Excel 报表中插入图片的两种方法详解 #### 一、背景介绍 在日常工作中,我们经常需要处理Excel文件,特别是在需要将数据可视化时,将图片插入Excel文档可以使得报告更加生动直观。本文将详细介绍两种在C#...
在用labview做工程时,少不了要做报表。报表常常会有各种图表。在此写一段小程序以共分享。
### 知识点二:在 Excel 中插入图片 1. **确定图片路径**: - 示例中通过字符串拼接的方式获取图片的完整路径,如 `"E:\\վ\\xunyuan\\Web\\upload\\" + dt.Rows[i]["a1"].ToString().Substring(7);`。 - 注意...
在Excel中,我们通常会遇到需要插入图片的情况,如数据可视化、报告美化等。而有时候,为了更好地展示细节,我们希望点击图片时能放大显示,但又不希望通过超链接来实现这一功能。本文将详细讲解如何在Excel中为图片...
Visual C++源代码 193 如何向Excel文件导入图像文件Visual C++源代码 193 如何向Excel文件导入图像文件Visual C++源代码 193 如何向Excel文件导入图像文件Visual C++源代码 193 如何向Excel文件导入图像文件Visual ...
本篇文章将详细介绍如何利用Java和Apache POI库向Excel工作表中插入图片。 首先,我们需要理解Apache POI的工作原理。POI提供了一个名为HSSFPatriarch的类,它是Excel中的图形绘制容器,可以用于插入图片。对于....
介绍:c++ 操作Excel,支持读写,插入图片,单元格合并,颜色字体设置等等, 使用后不会有EXCEL.EXE进程存在,可以直接作为第三方库使用,附件是完整的项目,自测多次通过。如有问题,请交流讨论,谢谢!
另外,还实现了如何在Excel中插入散点图图表并添加趋势线,获取趋势线方程。 可以供进一步开发参考之用。 QAxContainer不包含在QtCore里面,所以要使用这里的代码的话还必须要在.pro文件中添加CONFIG+=qaxcontainer...
这篇教程将专注于如何使用C#创建、读取、写入Excel文件,并且重点讲解如何在Excel中插入图片。我们将通过COM(Component Object Model)接口来实现这一功能,这是微软提供的一个允许不同应用程序之间交互的技术。 ...