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版的不支持
相關文章
相關標籤/搜索