@Override
public void export(Long id, HttpServletResponse response) throws IOException {
MlImcConfigVo mlImcConfigVo = this.exportAndUpload(id);
String taskName = mlImcConfigVo.getTaskName();
//获取日期
String date = taskName.substring(9, 17);
//原图片文件名 和 带有尺寸图片文件名
String originImageKey = String.format("/imc/%s/%s/origin_img", date, taskName);
String sizedImageKey = String.format("/imc/%s/%s/result_img", date, taskName);
System.out.println(originImageKey);
System.out.println(sizedImageKey);
ossService.downs3(originImageKey, originImageKey);
ossService.downs3(sizedImageKey, sizedImageKey);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Workbook workbook = new XSSFWorkbook();
//创建一个工作表
Sheet sheet = workbook.createSheet("IMC管理");
//表头
String[] headers = {"原图", "带尺寸的图片"};
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
headerRow.createCell(i).setCellValue(headers[i]);
}
Row dataRow = sheet.createRow(1);
insertImage(workbook, sheet, dataRow, 0, originImageKey); // 原图
insertImage(workbook, sheet, dataRow, 1, sizedImageKey); // 带尺寸图
// 6. 自适应列宽
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
// 7. 写入输出流
workbook.write(outputStream);
workbook.close();
}
private void insertImage(Workbook workbook, Sheet sheet, Row row, int column, String imageKey)
throws IOException {
OssClient storage = OssFactory.instance();
InputStream imageStream = storage.getObjectContent(imageKey);
if (imageStream == null) {
row.createCell(column).setCellValue("图片不存在");
return;
}
// 读取图片字节
byte[] imageBytes = new byte[imageStream.available()];
imageStream.read(imageBytes);
imageStream.close();
// 插入图片到Excel(假设为JPEG格式)
int pictureType = Workbook.PICTURE_TYPE_JPEG;
int pictureIdx = workbook.addPicture(imageBytes, pictureType);
// 定义图片位置
Drawing<?> drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, column, row.getRowNum(),
column + 1, row.getRowNum() + 1);
drawing.createPicture(anchor, pictureIdx);
}这个是我的方法 和依赖 <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>