我想要通过 1 **的数据。。怎么样在excel 插入图片的时候 让图片能够等比例的缩放呢
也就是我想问的 **2 里面的数据怎么写呢?
设置图片的缩放比例 这样等比例应该没问题了
先看下这个 http://www.bubuko.com/infodetail-2310009.html
你要等比例缩放,无非就是固定x,算出对应比例的y,或者固定y,算出对应比例的x。
根据上面的链接,以及假设你的图片从(0,0)开始,可以看出,x的长度等于它跨过所有单元格的宽度+最后一个单元格里的长度,由dx制定
y则是跨越单元格的高度的总和和最后一个单元格中的高度,由dy指定。
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
BufferedImage bufferedImg = ImageIO.read(new File("e:\\111.png"));
int imgH = bufferedImg.getHeight();
int imgW = bufferedImg.getWidth();
ImageIO.write(bufferedImg, "png", byteArrayOut);
HSSFWorkbook workbook = new HSSFWorkbook();// 创建个空白的workbook
HSSFSheet sheet = workbook.createSheet();// 创建个空白的sheet
// 单元格宽度
int w = sheet.getColumnWidth(0) / 256;
HSSFRow row = sheet.createRow(0);
// 单元格高度
float hp = row.getHeightInPoints();
int h = (int) (row.getHeight() / hp);
// sheet.createRow(rownum)
System.out.println(h);
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
System.out.println("图片:高:宽" + imgH + "==" + imgW);
System.out.println("单元格:高:宽" + h + "==" + w);
// 比如你想让图片占10行
// HSSFClientAnchor 参数
// dx1 dy1起始单元格x y 坐标
int dx1 = 0;
int dy1 = 0;
// dx2 dy2 结束单元格 x y 坐标
int dx2 = w;
int dy2 = h;
// 起始列 起始行
short col1 = 0;
int row1 = 0;
// 结束列 结束行
int row2 = 10;// 因为你想占10行 所以这里是10
int colInt = row2 * w * imgH / imgW / h;
short col2 = (short) colInt;
HSSFClientAnchor anchor = new HSSFClientAnchor(dx1, dy1, dx2, dy2,
col1, row1, col2, row2);
patriarch.createPicture(anchor, workbook.addPicture(
byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
FileOutputStream fileOut = new FileOutputStream("e:\\111.xls");
workbook.write(fileOut);
基本计算公式就是图片高/图片宽 = (行数*行宽)/(列数*列宽) 这样结果肯定在转换的时候有一点点差距 但是差距不大