java根据excel模版导出数据详解编程语言


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版的不支持

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16376.html

(0)
上一篇 2021年7月19日 19:15
下一篇 2021年7月19日 19:15

相关推荐

发表回复

登录后才能评论