POI实现 Excel插入图片
使用jar包
代码如下
import cn.hutool.core.io.resource.ClassPathResource;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.ClientAnchor;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.streaming.SXSSFDrawing;import org.apache.poi.xssf.streaming.SXSSFSheet;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import org.apache.poi.xssf.usermodel.XSSFClientAnchor;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.*;public class Test {public static void main(String[] args) throws IOException {OutputStream outputStream = new FileOutputStream("src/poi/插入图片/file/1.xlsx");Workbook workbook = new SXSSFWorkbook();insertPic(workbook);workbook.write(outputStream);workbook.close();}private static void insertPic(Workbook workbook){try {//获得画图的管理类SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("sheet");sheet.setDefaultRowHeight((short) 2000);SXSSFDrawing sxssfDrawing = sheet.createDrawingPatriarch();ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();//anchor主要用于设置图片的属性XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255, 0, 0, 1, 1);anchor.setAnchorType(ClientAnchor.AnchorType.DONT_MOVE_DO_RESIZE);ClassPathResource pathResource = new ClassPathResource("poi/插入图片/pic/1.png");//将图片读到BufferedImageBufferedImage bufferedImage = ImageIO.read(pathResource.getStream());// 将图片写入流中ImageIO.write(bufferedImage, "png", byteArrayOut);sxssfDrawing.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));}catch (Exception e){e.printStackTrace();}}}
关于XSSFClientAnchor参数
dx1 第一个单元格中的x坐标。
dy1 第一个单元格中的y坐标。
dx2 第二个单元格中的x坐标。
dy2 第二个单元格中的y坐标。
col1 第一个单元格的列(基于0)。
row1 第一个单元格的行(基于0)。
col2 第二个单元格的列(基于0)。
row2 第二个单元格的行(基于0)