工作越来越忙,很久没来更新了。今天刚抽个小空,整理一下。excel导出图片的总结,希望对你有用~
HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); // 读取图片 File file = ResourceUtils.getFile("classpath:file/520.png"); // 获取路径 String url = file.getAbsolutePath(); BufferedImage bufferImg = ImageIO.read(new File(url)); ImageIO.write(bufferImg, "png", byteArrayOut); // 图片一导出到单元格A1中 HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short) 0,0); // 插入图片,注意这个问题PICTURE_TYPE_JPEG。如果导出的图片没有显示,请更改此处 patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); URL url = new URL("https://t7.baidu.com/it/u=3281686603,2838365105&fm=193&f=GIF"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); InputStream inStream = conn.getInputStream(); byte[] byteData = readInputStream(inStream); // 图片一导出到单元格A1中 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255,(short) 0, 0, (short) 0, 0); //插入图片 patriarch.createPicture(anchor,workbook.addPicture(byteData, HSSFWorkbook.PICTURE_TYPE_JPEG));
private static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); //创建一个Buffer字符串 byte[] buffer = new byte[1024]; ///每次读取的字符串长度,如果是-1,代表全部读完 int len = 0; ///使用输入流buffer读取数据 while( (len=inStream.read(buffer)) != -1 ){ //用输出流buffer写入数据,中间参数代表从哪个位置读取,len代表读取的长度 outStream.write(buffer, 0, len); } //关闭输入流 inStream.close(); //把outStream内存中写入数据 return outStream.toByteArray(); }
jar如下: import java.io.*; import java.net.HttpURLConnection; import java.net.URL; HSSFClientAnchor说明 new HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2); dx1、dy1:在起始单元格中x,y坐标 dx2、dy2-单元格结束x,y坐标 单元格:x(宽)-(0-1023)y(高)-(0-255) col1、row1-开始单元格,从0开始下标 col2、row2-结束单元格 ,下标从0开始 例如: // 图片一导出到单元格I2中 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255,(short) 0, 0, 0, 0);