java poi 向excel写入图片
2023-09-11 14:21:41 时间
import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class Picture { public static void main(String[] args) { //String filepath = SpringConfigUtil.getValue("filepath"); //String picturepath = SpringConfigUtil.getValue("picturepath"); //int rowNum = Integer.parseInt(SpringConfigUtil.getValue("rowNum")); // int cellNum = Integer.parseInt(SpringConfigUtil.getValue("cellNum")); boolean result = insertPicture("E:\\data\\file\\201509\\2015.xls", "E:\\data\\file\\201509\\test.jpg", 3, 5);// 1代表插入的行数-1 // ,2代表插入的列数-1 System.out.println("图片插入结果为==" + result); } /* 插入图片地址 文件地址 插入图片位置的关键字 图片类型 */ /** * @param filePath * @param picturePath * @param rowNum * @param cellNum * @return */ public static boolean insertPicture(String filePath, String picturePath, int rowNum, int cellNum) { // 初始化IO流内容 FileOutputStream fileOut = null; BufferedImage bufferImg = null; int rowN = rowNum;// 图片插入行的初始化 int cellN = cellNum;// 图片插入列的初始化 try { // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(picturePath));// 图片地址 ImageIO.write(bufferImg, "png", byteArrayOut); // 创建一个工作薄 HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath)); HSSFSheet sheet1 = wb.getSheetAt(0); // 创建插入图片需要的容器 HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); /* * HSSFClientAnchor几个数字解释:3:是x轴的开始节点, 0: * 是y轴的开始节点,1023:是x轴的结束节点,255:是y轴的结束节点 * ,1:是从Excel的2列开始插入图片,10:是从excel的第11行开始插入图片, * 11:图片占用11列的位置,25:图片结束在excel的26行 */ HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) ((short) cellN), (rowN), (short) ((short) cellN + 1), (rowN)); anchor.setAnchorType(2); // 插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); fileOut = new FileOutputStream(filePath); // 写入excel文件 wb.write(fileOut); fileOut.close(); return true; } catch (IOException io) { io.printStackTrace(); System.out.println("io erorr : " + io.getMessage()); return false; } finally { if (fileOut != null) { try { fileOut.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
参数读取:
import java.util.Properties; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; public class SpringConfigUtil { private static Properties spring_props = new Properties(); static { try { Resource resource = new ClassPathResource("/META-INF/config/app-config.properties"); spring_props = PropertiesLoaderUtils.loadProperties(resource); } catch (Exception e) { e.printStackTrace(); } } public static String getValue(String key) { String value = ""; if (spring_props.containsKey(key)) { value = spring_props.getProperty(key, ""); } return value; } }
相关文章
- 2011年全国软件大赛模拟题及参考答案(Java本科组)
- JAVA-数据库之Statement对象
- java的poi技术读取Excel数据到MySQL
- Office EXCEL 不用VB,你也可以制作自己的Excel菜单!
- Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)
- Java实现 LeetCode 632 最小区间(又是先序队列,官方给的是堆)
- Java实现 LeetCode 474 一和零
- Java实现 LeetCode 429 N叉树的层序遍历
- Java实现 LeetCode 347 前 K 个高频元素
- java实现猜生日
- Java实现第九届蓝桥杯等腰三角形
- Java实现 蓝桥杯VIP 算法提高 插入排序
- java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解
- java读取Excel文件
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- 【JAVA】 01-Java基础知识
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit.导出excel报表的设计与实现java .net php 总结
- Java使用POI实现多个excel合并成一个excel
- Interview:Java岗位面试—面试求职攻略之一个JAVA程序员面试心得(非常值得收藏)
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- 1小时学会通过Java Swing Design设计java图形化
- Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法
- Java学习路线-36:Set集合
- java.util.zip包 OutputStream ZipOutputStream以压缩包的方式导出或下载多个文件,比如图片,文档,Excel表格等
- Java并发编程:Lock
- Java 多字段排序Comparator(兼容Date,Integer,Doubel,Long)
- WebService(2)-XML系列之Java和Xml之间相互转换
- JAVA学习第十九课(java程序的异常处理 (二))
- Java开发技术之成为高级java工程师必须学习的三个技术
- Java开发技术之成为高级java工程师必须学习的三个技术
- JAVA操作Excel表格:方法二:POI的使用①:Excel实战之POI创建excel文件(低版本)