java批量导入图片_java 批量导入图片到excel

这段代码展示了如何使用Java的Apache POI库批量将图片插入到Excel工作簿的两个不同工作表中。通过创建HSSFWorkbook对象,创建HSSFSheet,然后利用HSSFPatriarch和HSSFClientAnchor来定位并插入图片。
摘要由CSDN通过智能技术生成

1 package com.sun.office.excel;

2

3 import java.awt.image.BufferedImage;

4 import java.io.ByteArrayOutputStream;

5 import java.io.File;

6 import java.io.FileOutputStream;

7 import java.io.IOException;

8

9 import javax.imageio.ImageIO;

10

11 import org.apache.poi.hssf.usermodel.HSSFClientAnchor;

12 import org.apache.poi.hssf.usermodel.HSSFPatriarch;

13 import org.apache.poi.hssf.usermodel.HSSFSheet;

14 import org.apache.poi.hssf.usermodel.HSSFWorkbook;

15

16 public class ExcelImageDemo {

17

18 public static void main(String[] args) {

19 FileOutputStream fileOut = null;

20 BufferedImage bufferImg = null;

21 // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray

22 try {

23 ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

24 bufferImg = ImageIO.read(new File("D:/ubuntn.jpg"));

25 ImageIO.write(bufferImg, "jpg", byteArrayOut);

26

27 HSSFWorkbook wb = new HSSFWorkbook();

28 HSSFSheet sheet1 = wb.createSheet("test picture");

29 // 画图的顶级管理器,一个sheet只能获取一个(一定要注意这点)

30 HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();

31 for (int i = 0; i < 3; i++) {

32 // anchor主要用于设置图片的属性

33 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250, (short) 1, 1+i*10, (short) 5, 8+i*10);

34 // 插入图片

35 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

36 }

37 HSSFSheet sheet2 = wb.createSheet("test picture2");

38 //第二个sheet页

39 HSSFPatriarch patriarch2 = sheet2.createDrawingPatriarch();

40 for (int i = 0; i < 3; i++) {

41 // anchor主要用于设置图片的属性

42 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 250, (short) 1, 1+i*10, (short) 5, 8+i*10);

43 // 插入图片

44 patriarch2.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

45 }

46 fileOut = new FileOutputStream("Excel.xls");

47 // 写入excel文件

48 wb.write(fileOut);

49 System.out.println("----Excle文件已生成------");

50 } catch (Exception e) {

51 e.printStackTrace();

52 } finally {

53 if (fileOut != null) {

54 try {

55 fileOut.close();

56 } catch (IOException e) {

57 e.printStackTrace();

58 }

59 }

60 }

61 }

62 // 关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数,有必要在这里说明一下:

63 // dx1:起始单元格的x偏移量,

64 // dy1:起始单元格的y偏移量,

65 // dx2:终止单元格的x偏移量,

66 // dy2:终止单元格的y偏移量,

67 // col1:起始单元格列序号,从0开始计算;

68 // row1:起始单元格行序号,从0开始计算,

69 // col2:终止单元格列序号,从0开始计算;

70 // row2:终止单元格行序号,从0开始计算,

71 //添加多个图片时:多个pic应该share同一个DrawingPatriarch在同一个sheet里面。

72 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值