gpt4 book ai didi

java - Apache POI-HSSF 在将图片添加到 Excel 单元格时扭曲图像大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:10 39 4
gpt4 key购买 nike

我正在使用 Apache POI-HSSF 将图片添加到单元格中。图片为 120x100,但无论我做什么以及如何调整它的大小,Excel 电子表格总是显示它跨越多行并将其扭曲到比宽度大得多的高度。

如何保持原始尺寸?

我的代码:

InputStream is = new FileInputStream(getImageURL());
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();

//add a picture shape
CreationHelper helper = wb.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
// Create the drawing patriarch. This is the top level container for all shapes.
Drawing drawing = sheet1.createDrawingPatriarch();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it

anchor.setAnchorType(0);
anchor.setCol1(1);
anchor.setRow1(1);

Picture pict = drawing.createPicture(anchor, pictureIdx);

//auto-size picture relative to its top-left corner
pict.resize();

我已经尝试了所有的 dx/dy 坐标和 Col/Row。位置无关紧要,问题在于水平拉伸(stretch)图像。

最佳答案

我曾遇到过类似的问题,即我添加的图片失真了。我尝试了 pict.resize() 和 sheet.autoSizeColumn() 但它没有用。最后我找到了以下网址:- https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/examples/ss/AddDimensionedImage.java

我将上面的类添加到我的代码中,并使用它的方法将图像添加到 excel 中。我能够添加几乎没有失真的图像。希望这对你也有帮助。我写了下面的代码:-

BufferedImage imageIO = ImageIO.read(new URL(image));
int height= imageIO.getHeight();
int width=imageIO.getWidth();
int relativeHeight=(int)(((double)height/width)*28.5);
new AddDimensionedImage().addImageToSheet(2, sheet.getPhysicalNumberOfRows()-1 , sheet, sheet.createDrawingPatriarch(),new URL(image), 30, relativeHeight, AddDimensionedImage.EXPAND_ROW);

关于java - Apache POI-HSSF 在将图片添加到 Excel 单元格时扭曲图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16181674/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com