1 package poi.excel;
2
3 import java.awt.Graphics;
4 import java.awt.Image;
5 import java.awt.image.BufferedImage;
6 import java.io.ByteArrayOutputStream;
7 import java.io.FileInputStream;
8 import java.io.IOException;
9 import javax.imageio.ImageIO;
10 import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
11 import org.apache.poi.hssf.usermodel.HSSFPatriarch;
12 import org.apache.poi.hssf.usermodel.HSSFPicture;
13 import org.apache.poi.hssf.usermodel.HSSFSheet;
14 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
15
16 /**
17 * poi HSSF 提取点方法
18 * @author sikaijian
19 */
20 public class Excel03Util {
21 /**
22 * 画图片
23 * @param sheet
24 * @param wb
25 * @param startCol
26 * @param startRow
27 * @param endCol
28 * @param endRow
29 * @param pictureIndex 图片索引号 需要先在workbook中加入图片资源
30 * @throws IOException
31 * @author sikaijian
32 */
33 public static void drawPicture(HSSFSheet sheet, HSSFWorkbook wb,
34 short startCol, int startRow, short endCol, int endRow,
35 int pictureIndex) throws IOException {
36 // 图片容器
37 HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
38
39 // 锚点 容器下锚位置
40 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 255, startCol,
41 startRow, endCol, endRow);
42 anchor.setAnchorType(2);
43
44 // 容器下锚,并载入图片
45 HSSFPicture picture = patriarch.createPicture(anchor, pictureIndex);
46
47 picture.resize();
48 picture.setLineStyle(picture.LINESTYLE_DASHDOTGEL);
49 }
50
51 /**
52 * 加载图片
53 * @param img 图片对象
54 * @param wb
55 * @return 图片索引号
56 * @throws IOException
57 * @author sikaijian
58 */
59 public static int loadPicture(Image img, HSSFWorkbook wb)
60 throws IOException {
61 int pictureIndex;
62 ByteArrayOutputStream arrayOut = null;
63 try {
64 arrayOut = new ByteArrayOutputStream();
65 BufferedImage buImage = new BufferedImage(img.getWidth(null), img
66 .getHeight(null), BufferedImage.TYPE_INT_RGB);
67 Graphics g = buImage.getGraphics();
68 g.drawImage(img, 0, 0, null);
69 ImageIO.write(buImage, "png", arrayOut);
70
71 byte[] data = arrayOut.toByteArray();
72
73 pictureIndex = wb.addPicture(data, HSSFWorkbook.PICTURE_TYPE_PNG);
74 } finally {
75 if (null != arrayOut) {
76 arrayOut.close();
77 }
78 }
79
80 return pictureIndex;
81 }
82
83 /**
84 * 加载图片
85 * @param path 图片路径
86 * @param wb
87 * @return 图片索引号
88 * @throws IOException
89 */
90 public static int loadPicture(String path, HSSFWorkbook wb)
91 throws IOException {
92 int pictureIndex;
93 FileInputStream fis = null;
94 ByteArrayOutputStream bos = null;
95 try {
96 fis = new FileInputStream(path);
97 bos = new ByteArrayOutputStream();
98 int c;
99 while ((c = fis.read()) != -1)
100 bos.write(c);
101 pictureIndex = wb.addPicture(bos.toByteArray(),
102 HSSFWorkbook.PICTURE_TYPE_PNG);
103 } finally {
104 if (fis != null)
105 fis.close();
106 if (bos != null)
107 bos.close();
108 }
109 return pictureIndex;
110 }
111 }
112