zoukankan      html  css  js  c++  java
  • POI导出数据相关的辅助类

    package zxc.util.ieport.poi;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    
    import org.springframework.util.CachingMapDecorator;
    
    import zxc.exceptions.BaseRuntimeException;
    import zxc.model.support.FileBaseBean;
    import zxc.model.support.IeudBean;
    import zxc.util.ieport.IExport;
    
    /**
     * 这是一个组件工作
     * 
     * @author KHT
     * 
     */
    public class POIExcelFactory {
    
    	private static POIExcelFactory	excelFactory		= new POIExcelFactory();
    
    	public static final String		DEFAULT_EXPORT_KEY	= "DEFAULT_EXPORT_KEY";
    
    	@SuppressWarnings("unchecked")
    	private Map<String, IExport>	exportContainer		= new CachingMapDecorator() {
    															@Override
    															protected Object create(Object key) {
    																return new DefaultExcelExport();
    															}
    
    														};
    
    	protected POIExcelFactory() {
    		super();
    	}
    
    	public static POIExcelFactory getFactory() {
    		return excelFactory;
    	}
    
    	public IExport getDefaultExport() {
    		return this.getExport(DEFAULT_EXPORT_KEY);
    	}
    
    	public IExport getExport(String exportKey) {
    		return this.exportContainer.get(exportKey);
    	}
    
    	public void processExcelExport(FileBaseBean model) {
    		//需要导出
    		IeudBean ieudBean = model.getIeudBean();
    		if (ieudBean.getExport() != null && ieudBean.getExport()) {
    			POIWorkContext workContext = POIWorkContext.getCurrentContext();
    			workContext.initWorkContext(model);
    
    			this.getDefaultExport().exportData(workContext.getCurrentListData());
    
    			//如果采用一次性导出,或者在多次导出的情况下,处于完成状态时,则做最后处理
    			if (ieudBean.getOneTimeExport() || ieudBean.getExportCompleted()) {
    				ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(4069);
    				try {
    					workContext.getCurrentWorkbook().write(arrayOutputStream);
    				} catch (IOException e) {
    					throw new BaseRuntimeException("导出文件失败");
    				}
    				ieudBean.setDownLoadStream(new ByteArrayInputStream(arrayOutputStream.toByteArray()));
    				ieudBean.setContentType("application/vnd.ms-excel");
    				ieudBean.setContentDisposition("risen-zxc-" + new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(new Date()) + ".xls");
    				workContext.clearCurrentContext();//清理资源
    			}
    		}
    	}
    
    }
    
     
  • 相关阅读:
    mysql同步 小问题
    通过 XtraBackup 实现不停机不锁表搭建主从同步
    grep -A -B选项详解和mysqlbinlog
    MySQL存储过程中的3种循环
    mysql利用存储过程批量插入数据
    React routerV4 笔记
    数据结构算法基础定义
    网站性能优化
    去重除了indexOf的其他方法(使用对象Key的方法)及统计重复次数
    立即执行函数的两种写法及闭包
  • 原文地址:https://www.cnblogs.com/qq1988627/p/6606938.html
Copyright © 2011-2022 走看看