对Excel指定单元格插入图片
一、不懂就@我,不怕麻烦嘿嘿嘿
引入Pom
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
二、参考方法(希望能有帮助)
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg = null;//图片
try {
// 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
// 创建一个工作薄
xSSFWorkbook wb = new XSSFWorkbook();
//创建一个sheet
xSSFSheet sheet = wb.createSheet("out put excel");
// TODO 第一种方法 根据指定路径将图片读到BufferedImage
// bufferImg = ImageIO.read(new File("D:\\ji.png"));
// 将图片写入流中
// ImageIO.write(bufferImg, "png", byteArrayOut);
// TODO 第二种方法 根据Base64图片信息 QrCodeUtil: https://blog.csdn.net/weixin_45067120/article/details/119274924?spm=1001.2014.3001.5501
// 图片信息
String value = QrCodeUtil.Base64TurnQrCode(String base64值);
// 转换图片
BufferedImage bufferImg = QrCodeUtil.createQrCode(value,300);
// 将图片写入流中
ImageIO.write(bufferImg, "png", byteArrayOut);
// 利用HSSFPatriarch将图片写入EXCEL
XSSFDrawing patriarch = xSSFSheet.createDrawingPatriarch();
// 图片一导出到单元格I3-5中 列开始:8 行开始:2 列结束:9 行结束:5
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 8, 2, 9, 5);
anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE);
// 插入图片内容
Picture picture = patriarch.createPicture(anchor, xSSFWorkbook.addPicture(byteArrayOut
.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));
picture.resize(1.05,1.10);
//生成的excel文件地址
//fileOut = new FileOutputStream("C:/Users/uctimes/Downloads/123.xls");
fileOut = new FileOutputStream("D:\\2.xlsx");
// 写入excel文件
wb.write(fileOut);
} catch (IOException io) {
io.printStackTrace();
System.out.println("io erorr : " + io.getMessage());
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}