package ibp.core.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.Map; import javax.servlet.http.HttpServletResponse; import net.sf.jxls.transformer.XLSTransformer; import org.apache.commons.io.FileUtils; import org.apache.poi.ss.usermodel.Workbook; /** * <p>Excel帮助类 */ public class ExcelExportUtils { /** * 获取一个wb,导出图片用 * @param templateFile * @param beans * @return * @throws Exception */ public static Workbook getWorkbook(String templateFile, Map<Object, Object> beans) throws Exception{ XLSTransformer transformer = new XLSTransformer(); Workbook wb = transformer.transformXLS(getAbsoluteIn(templateFile), beans); return wb; } /*** * 得到绝对文件路径流 * @param path: excel模板路径 * @return */ public static InputStream getAbsoluteIn(String path){ File file = new File(path); InputStream in = null; try { in = new FileInputStream(file); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return in; } }
public class testaction{ /** * 导出excel * @param t10_page_in_parm * @param request * @param response */ @RequestMapping(value="downloadT10_report.do",method=RequestMethod.POST) public void export(HttpServletRequest request,HttpServletResponse response){ //获取excel信息 List list = null;//TODO Map<Object, Object> beans = new HashMap<Object, Object>(); beans.put("list", list); beans.put("count", list.size()); try { Workbook wb = ExcelExportUtils.getWorkbook(excelTemplatePath, beans); String uplodapath = "D:/temp"; String downLoadFileName = "testexcel.xlsx"; //下载图片到excel downloadImgToExcel(wb, uplodapath, downLoadFileName, response); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 下载图片到excel * @param wb * @param uplodapath * @param downLoadFileName * @param response */ private void downloadImgToExcel(XSSFWorkbook wb,String uplodapath,String downLoadFileName,HttpServletResponse response){ //下载图片到excel //begin BufferedImage bufferImg = null; try { //创建作图sheet XSSFSheet sheet1 = null; if(wb.getSheet("echarts")==null){ sheet1 = wb.createSheet("echarts"); }else{ sheet1 = wb.getSheet("echarts"); } //循环读取图片插入到excel String filedir = uplodapath + "\\" +"reporttpl\\"+LoginManager.getUserName(); File file = new File(filedir); if(file.isDirectory()){ String[] files = file.list(); //画图的顶级管理器,一个sheet只能获取一个(一定要注意这点) XSSFDrawing patriarch = sheet1.createDrawingPatriarch(); int i = 0; int rowbegin = 1; int rowend = 18; for(String _file : files){ if("png".equals(_file.substring(_file.lastIndexOf(".")+1))){ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); bufferImg = ImageIO.read(new File(filedir + "\\" + _file)); ImageIO.write(bufferImg, "png", byteArrayOut); //anchor主要用于设置图片的属性 XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 255, 255,(short) 1, rowbegin, (short) 11, rowend); //插入图片 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG)); i++; rowbegin = i*18+1; rowend = rowbegin + 18; } } } response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downLoadFileName, "GBK")); OutputStream out = response.getOutputStream(); // 写入excel文件 wb.write(out); out.close(); wb.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //end } }
根据模版导出数据要求模版必须是excel2007,2003版的不支持