Java 使用 Apache POI 将图片地址转换为图片写入 Excel 表格
使用 Apache POI 将图片地址转换为图片写入 Excel 表格
第一段代码:
String[] displayKeys = {'编号', '上传日期', '图片', '姓名'};
String[] dataKeys = {'id', 'date', 'images', 'username'};
xlsx.create(path, fileName, 'xlsx');
String flag = xlsx.writeInXlsxBulk(tempData.toString(), null, displayKeys, dataKeys);
第二段代码:
JSONObject json = new JSONObject(jsonstr);
JSONArray data = json.getJSONArray('data');
int length = data.length();
// 创建绘图对象
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
for(int i=0; i<length; i++) {
r = sheet.createRow(i+rowcount);
r.setHeight((short)(256*1.5));
int cellNum = 0;
JSONObject temp = new JSONObject(data.optString(i));
for(cellNum=0; cellNum<displayKeys.length; cellNum++) {
String key = dataKeys[cellNum];
String value = temp.optString(key);
if(key.equals('images')) {
// 将图片地址转换为图片
URL imageUrl = new URL(value);
InputStream imageStream = imageUrl.openStream();
byte[] bytes = IOUtils.toByteArray(imageStream);
int pictureIdx = workbook.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);
// 创建图片位置
CreationHelper helper = workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(cellNum);
anchor.setRow1(i+rowcount);
anchor.setCol2(cellNum+1);
anchor.setRow2(i+rowcount+1);
// 插入图片
patriarch.createPicture(anchor, pictureIdx);
} else {
// 创建普通单元格
CellUtil.createCell(r, cellNum, value);
}
}
}
上述代码中,当遍历到 'images' 字段时,先将图片地址转换为字节数组,然后使用 workbook.addPicture 将图片添加到工作簿中,接着使用 patriarch.createPicture 将图片插入到表格中对应的单元格位置。其他字段仍然使用原来的代码创建普通单元格。
请确保您已经导入了所需的包,例如 import org.apache.poi.ss.util.CellUtil;、import org.apache.poi.util.IOUtils; 等。
修改后的代码应该能够将图片地址转换为图片并写入到表格中。
注意:
- 确保
tempData中的 'images' 字段存储的是有效的图片 URL 地址。 HSSFWorkbook.PICTURE_TYPE_JPEG仅支持 JPEG 图片,其他格式需要修改代码。- 您可以根据需要调整图片大小和位置。
- 为了避免图片占用过多空间,建议将图片存储在独立的文件夹中,并将文件路径写入表格中,然后使用
java.awt.Image加载图片并展示。
更多信息:
- Apache POI 文档: https://poi.apache.org/
HSSFPatriarch类: https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPatriarch.htmlClientAnchor类: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/ClientAnchor.htmlCreationHelper类: https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/CreationHelper.html
原文地址: https://www.cveoy.top/t/topic/qC5s 著作权归作者所有。请勿转载和采集!