我们现在在写一个类似于考核老师的网上评分系统。
要求把某个员工的去年各个方面的平均成绩与今年的相比较。
导出excel的同时,把两年的数据一折线图的方式显示出来。我们的大体思想是,定义一个excel模板,里面有显示数据与图表的范围。所有的都套用这个模板。可是,每次读模板的时候,只能显示出数据。还读不出模板。
要求把某个员工的去年各个方面的平均成绩与今年的相比较。
导出excel的同时,把两年的数据一折线图的方式显示出来。我们的大体思想是,定义一个excel模板,里面有显示数据与图表的范围。所有的都套用这个模板。可是,每次读模板的时候,只能显示出数据。还读不出模板。
* 生成一张图片的方法
*/
public static void getCreateImgOne(Workbook wb, Sheet sheet,
Drawing drawing, CreationHelper helper, ExcelParamter ep) {
try {
// -----生成第一张图
byte[] bytes;
InputStream is = new FileInputStream(ep.getFilename());
bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
is.close();
// 添加图片形状
ClientAnchor anchor = helper.createClientAnchor();
// 设置左上角的图片,设置图片显示
anchor.setCol1(ep.getCol());// 设置距左边的距离(数字代表几个单元格)
anchor.setRow1(ep.getRow());// 设置距上边的距离(数字代表几个单元格)
Picture pict = drawing.createPicture(anchor, pictureIdx);
// auto-size picture relative to its top-left corner 图片相对于左上角
pict.resize();
// -----结束
} catch (IOException e) {
e.printStackTrace();
}
}几行代码就可以搞定...
图片生成之后,导出Excel时:String tempDirName = System.getProperty("java.io.tmpdir");//获取临时文件路径
String filename1 = ParamUtils.getParameter(request, "filename","");
if (!filename1.equals("")) {
filename1 = tempDirName + "\\" + filename1;//图片1
}
ExcelParamter ep = new ExcelParamter();
ep.setFilename1(filename1);//传入图片
ep.setImgnum(1);
//图片设定,你自己根据需要设置
ep.setCol1(2);//图片距左边的单元格数
ep.setRow1(listrow1.size() + 3);//图片距上面的行数//生成EXCEL文件
MendExcel.getExcelData(response.getOutputStream(), ep);
MendExcel.java就是标准的POI类
上面贴出的生成图片的方法是其一个方法,里面有一句:
InputStream is = new FileInputStream(ep.getFilename());