Java Excel 技巧:控制图片大小和多图并列
要控制图片大小,可以使用picture.resize()方法来调整图片大小。您可以在创建图片后调用此方法来设置所需的大小。
要将多张图片并列在单元格中,您可以使用XSSFClientAnchor类的不同参数来调整图片的位置和大小。在循环中,您可以根据需要调整XSSFClientAnchor对象的参数来设置每个图像的位置和大小。
以下是示例代码,展示了如何控制图片大小、将多张图片并列在单元格中:
for(cellNum=0;cellNum<dataKeys.length;cellNum++)
{
String value = temp.optString(dataKeys[cellNum]);
System.out.println('value============' + value);
if(dataKeys[cellNum].equals('images'))
{
JSONArray images = temp.optJSONArray('images');
if(images != null)
{
for(int j=0; j<images.length(); j++)
{
String imageUrl = images.optString(j);
URL imageUrlObj = new URL(imageUrl);
InputStream imageStream = imageUrlObj.openStream();
byte[] byteArray = IOUtils.toByteArray(imageStream);
int pictureIndex = wb.addPicture(byteArray, Workbook.PICTURE_TYPE_JPEG);
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cellNum, i+rowcount, (short) (cellNum+1), i+rowcount+1);
XSSFPicture picture = patriarch.createPicture(anchor, pictureIndex);
picture.resize(); // 调整图片大小
// 调整图片位置和大小
int pictureWidth = 100; // 设置图片宽度(单位:像素)
int pictureHeight = 100; // 设置图片高度(单位:像素)
anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
anchor.setCol1(cellNum);
anchor.setRow1(i+rowcount);
anchor.setCol2(cellNum+1);
anchor.setRow2(i+rowcount+1);
anchor.setDx1(0);
anchor.setDy1(0);
anchor.setDx2(pictureWidth * XSSFShape.EMU_PER_PIXEL);
anchor.setDy2(pictureHeight * XSSFShape.EMU_PER_PIXEL);
}
}
}
else
{
CellUtil.createCell(r, cellNum, value);
}
}
请注意,上述代码中的pictureWidth和pictureHeight变量定义了图片的宽度和高度(以像素为单位)。您可以根据需要调整这些值来设置图片的大小。
原文地址: https://www.cveoy.top/t/topic/qDgJ 著作权归作者所有。请勿转载和采集!