若您正在使用easypoi进行excel导出的话,希望这篇文章能帮到您。
本文主要是使用easypoi通过模版的形式导出图片。
若需要导出多sheet得话,非模版形式,可以参考我的文章EasyPOI->非模版形式导出Excel(多Sheet)。
模版形式的多sheet导出可参考:EasyPOI->模版形式导出Excel(多Sheet)
模版导出可参考我的文章Easypoi导出excel。
POM依赖如下:
<!-- easypoi -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
导出图片代码如下:
@Controller
@RequestMapping(value = "exportexcel")
public class ExportExcelTest {
@RequestMapping(value="exportexceltest")
@ResponseBody
public String exportExcelTest(HttpServletResponse response){
// 获取workbook对象
Workbook workbook = exportPicture() ;
// 判断数据
if(workbook == null) {
return "fail";
}
// 设置excel的文件名称
String excelName = "测试excel" ;
// 重置响应对象
response.reset();
// 当前日期,用于导出文件名称
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateStr = "["+excelName+"-"+sdf.format(new Date())+"]";
// 指定下载的文件名--设置响应头
response.setHeader("Content-Disposition", "attachment;filename=" +dateStr+".xls");
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 写出数据输出流到页面
try {
OutputStream output = response.getOutputStream();
BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
workbook.write(bufferedOutPut);
bufferedOutPut.flush();
bufferedOutPut.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
public Workbook exportPicture() {
TemplateExportParams params = new TemplateExportParams(
"d:/项目测试文件夹/easyPoiExportPicture.xlsx", true);
//
Map<String, Object> map = new HashMap<String, Object>();
// 数据列表
List<Map<String, Object>> pictureList = new ArrayList<Map<String, Object>>() ;
// 创建数据对象
Map<String, Object> temp = new HashMap<String, Object>();
// 创建图片
ImageEntity image = new ImageEntity();
image.setHeight(1000);
image.setWidth(2500);
image.setUrl("static/images/fu.jpg");
//
temp.put("name","福字") ;
temp.put("image", image);
//
pictureList.add(temp);
// 创建数据对象
Map<String, Object> temp1 = new HashMap<String, Object>();
// 创建图片
ImageEntity image1 = new ImageEntity();
image1.setHeight(2000);
image1.setWidth(5000);
image1.setUrl("static/images/tree.jpg");
//
temp1.put("name","树") ;
temp1.put("image", image1);
//
pictureList.add(temp1);
//
map.put("i" , pictureList);
//
Workbook book = ExcelExportUtil.exportExcel(params, map);
//
return book ;
}
}
模版示例:
导出后结果:
注意:图片的宽高需要通过ImageEntity对象的width和height属性指定,且每列图片的宽高需相同。
其他相关使用请参考原文章:http://easypoi.mydoc.io/#text_217673
如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。