Java编程POI处理Excel中添加图片

编程教程 > Java (3658) 2025-01-27 08:46:17
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelPicTest {
	public static void main(String[] args) {
		try {
			// 创建一个excel文件
			XSSFWorkbook workbook = new XSSFWorkbook();
			// 获取第一个表格
			Sheet sheet0 = workbook.createSheet();

			// 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)
			XSSFDrawing patriarch = (XSSFDrawing) sheet0.createDrawingPatriarch();
			// 图片定位
			// 参数说明
			// int dx1, int dy1, int dx2, int dy2, int col1, int row1, int col2,
			// int row2
			// dx1,dy1,dx2,dy2一般用不到,标识单元格内的x,y

			// **********************以下四个参数定位图片的具体存放位置*********************
			// col1:the column (0 based) of the first cell.
			// row1:the row (0 based) of the first cell.
			// col2: the column (0 based) of the second cell.
			// row2: the row (0 based) of the second cell.
			// **********************以上四个参数用来定位两个单元格,都是从索引0开始的************

			// col1/row1定位图片开始的左上角位置(包含当前单元格),这里传递的1,1表示图片左上角为第2行(索引从0开始1表示第二行)第二个单元格(索引从0开始1表示第二行)开始
			// col2/row2定位图片的右下角位置(不含),这里的8,5标识结束为6行(索引从0开始1表示第二行)第9格单元格(索引从0开始1表示第二行)结束
			XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, 1, 1, 8, 5);
			//
			FileInputStream fis = new FileInputStream(new File("d:/1.jpg"));

			byte[] image = input2byte(fis);// 图片
			patriarch.createPicture(anchor, workbook.addPicture(image, HSSFWorkbook.PICTURE_TYPE_PNG));// 写图片

			// excel文件输出
			File excel = new File("d://t1.xlsx");
			workbook.write(new FileOutputStream(excel));
			workbook.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static final byte[] input2byte(InputStream inStream) throws IOException {
		ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
		byte[] buff = new byte[100];
		int rc = 0;
		while ((rc = inStream.read(buff, 0, 100)) > 0) {
			swapStream.write(buff, 0, rc);
		}
		byte[] in2b = swapStream.toByteArray();
		return in2b;
	}
}


执行结果:
Java编程Excel


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Java编程中,很多报表系统需要导出Excel文件,并且某些时候需要导出一定的图形统计,其实就是将图片放在Excel中,下面讲解Java如何实现Excel图片编辑插入
Java编程中使用POI框架以模板方式导出Excel文件,适合Excel比较复杂的情况1.引入包,以下是通过maven方式引入必须依赖 <!-- POI sup
java编程中通过easypoi导出excel文件并处理导出数据
问题描述Java 开发中使用spring  boot 下载excel文件提示“文件中部分内容有问题
某些时候,我们使用Java得POI工具内得XSSFSheet来创建excel表格,用于导出数据,但是下载到本地用excel打开得时候就会以下提示:​文件兼容错误提示解决办法: @GetMap...
java 图片 无损压缩。随着科技进步,大家手机拍的照片也从之前的几百KB变成几MB或者10MB了,有些情况我们需要压缩一下图片节省网络资源。这里将会讲解如何采用Java语音进行图片的无损压缩
Java编程中处理图片文件与base64串的图片相互转化工具类,方便在编程中处理前端传递过来的base64图片。
功能说明:1.指定图片大小缩放图片(reSize);2.指定图片的宽度,高度根据比例缩放(reSizeByWith);3.指定图片的高度,宽度根据比例缩放(reSizeByHeight);4.判...
spring boot 图片上传后在线预览实现,某些情况下我们上传的图片需要在线预览而不是下载,这个时候就需要注意下面的两个配置了response.setHeader("Content-Type...
引言    现如今越来越多的web网站或者内部管理web系统都有自己的数据分析中心
Java图片等比缩放 //重置大小(太宽没啥用)最大支持1.5倍图(1150*1.5) int maxWidth=(int)(920*1.5); //大小重置
java实现生成彩色背景图片验证码,在登陆和注册可以使用,工具类将图片的IO流通过response输出到浏览器,在浏览器中可以使用 img标签的src属性路径写上该工具类的访问路径即可。
Java Spring MVC/Spring Boot 项目实现图片或文件下载,该方法同样适用于struts1/2环境或者普通Java Web项目环境。下载源码
最近在学习JavaFX,发现资料很少,连基本的图片读取都很多错误版本
Java编程之spring boot FastDFS Java client使用,Java编程,FastDFS Java客户端