场景:将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插入图片
DataGridView 添加图片 导出 excel 插入图片 添加图片 ,图片设置大小c# 包含源码
POI向excel中插入图片
java实现在Excel中插入图片有时碰到下载excel中加入图片或已经制作好的图章。
JavaScript 使用ActiveX实现在Excel文件中插入图片
功能说明:包含对工作表、单元格的常用操作,重点包含插入图片的功能 属性:普通类 其他:需要在工程中添加COM组件的引用:Microsoft Excel 12.0 Object Library (注:12.0是Excel2007的版本号,如果是2003...
设置Excel插入图片的透明色.rar,将图片中的一种颜色设置为透明。
Excel插入图片的调整.rar,在Excel中,可以对插入工作表中的彩色图片进行颜色的调整,该示例文件展示了Excel的8种调整功能。
本工程使用C#创建并且可以向创建的单元格中插入图片,工程是VS2010版本的,在VS2010以及以上可以直接运行。
excel2007插入图片,在bin\debug中有默认图片和生成的excel
在用labview做工程时,少不了要做报表。报表常常会有各种图表。在此写一段小程序以共分享。
Excel VBA_插入图片实例集锦.doc
利用java往excel中插入图片 POI利用java往excel中插入图片POI形式
介绍:c++ 操作Excel,支持读写,插入图片,单元格合并,颜色字体设置等等, 使用后不会有EXCEL.EXE进程存在,可以直接作为第三方库使用,附件是完整的项目,自测多次通过。如有问题,请交流讨论,谢谢!
这几天做向Excel插入数据,其中有插入图片的需求,经试验,下面2种方法都可以插入图片,但各有不同的用处。现将这2种方法共享出来, 希望需要的朋友进行参考,代码中已经有详细注释了。
Excel自动插入图片 看到网上老是有人询问Excel自动插入图片的问题,刚好自己也很需要。看了看别人给出的答案,没有比较理想的方案,做了这3个文件,相信对外贸业务员或其它经常需要在Excel中插入图片的人非常有用。...
在网上找了好多代码,要么就是不能指定位置,要么就是不能控制大小,现在我结合别人的方法修改了下,试用成功,可以在指定单元格导出指定大小的图片,也可以在中间显示原图,或者两种一起显示。
作者项目开发的程序中要实现将程序中数据,包含图片要导出到EXCEL表格中,图片要根据不同数据对应到不同的单元格中,经过5天研究参看大量网络例子及思考,完成了导出图片到指定单元格编码实现。希望看官5分钟搞定...
excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码excel中插入图片.rar源代码...
1、批量插入图片到Excel,设置单元格图片的格式 2、设定Excel格式单元格居中 3、设定Excel单元格文字格式,例如颜色、粗体等 4、设置行、列的高度宽度 ps: 程序依赖其他的python库,需要先安装pip,再利用pip安装...