javapoiexcel导出表头列名不是类属性导出的数据一部分存放在容器里面

编程

贴上解决我自己问题的代码,当然还有其它方式,见文章后面的总结

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.springframework.cglib.beans.BeanGenerator;
import org.springframework.cglib.beans.BeanMap;

public class DynamicDto {
    
    public DynamicDto() {
        super();
    }


    /**
     * 目标对象
     */
    private Object target;

    /**
     * 属性集合
     */
    private BeanMap beanMap;
    
    @SuppressWarnings("unchecked")  
    public void init(Map propertyMap) {  
      this.target = generateBean(propertyMap);  
      this.beanMap = BeanMap.create(this.target);  
    }  
  
    /** 
      * 给bean属性赋值 
      * @param property 属性名 
      * @param value 值 
      */  
    public void setValue(String property, Object value) {  
      beanMap.put(property, value);  
    }  
  
    /** 
      * 通过属性名得到属性值 
      * @param property 属性名 
      * @return 值 
      */  
    public Object getValue(String property) {  
      return beanMap.get(property);  
    }  
  
    /** 
      * 得到该实体bean对象 
      * @return 
      */  
    public Object getObject() {  
      return this.target;  
    }  
  
 
    @SuppressWarnings("unchecked")  
    private Object generateBean(Map propertyMap) {  
      BeanGenerator generator = new BeanGenerator();  
      Set keySet = propertyMap.keySet();  
      for (Iterator i = keySet.iterator(); i.hasNext();) {  
       String key = (String) i.next();  
       generator.addProperty(key, (Class) propertyMap.get(key));  
      }  
      return generator.create();  
    }  

 

使用方法:先调用init方法进行初始化,然后再对属性进行setValue

主要技巧:就是javabean和map之间的一个转换,相关功能的jar如:

1、 net.sf.cglib.beans.BeanMap

2、 org.springframework.cglib.beans.BeanMap

3、Apache BeanUtils

可能还有其它的,这里就不赘述了。

以上是 javapoiexcel导出表头列名不是类属性导出的数据一部分存放在容器里面 的全部内容, 来源链接: utcz.com/z/518086.html

回到顶部