一个ObjectExcel的工具类..(转的)

介绍了一个通用工具类,用于将Java POJO对象集合映射到Excel文件,并输出到指定流中。该工具利用反射和OGNL表达式来自动填充Excel表格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package util;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import ognl.Ognl;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
 * @author codingShop
 *通用pojo对象集合映射excel到输出流工具,使用反射与ognl,本地,网络都可用,使用反射提高了通用性
 *注意使用此工具类,要求pojo类的输出属性必须提供get/set方法,因为ognl要访问获取属性值
 */
public class Object2Excel {
    //调用反射,实现pojo到excel文件的映射
    private Object2Excel(){}
    //获取对象所属类的属性信息
    public static List<String> parsePojoProps(Object obj){
        if(obj==null)return null;
        Class clazz = obj.getClass();
        Field[] fields=clazz.getDeclaredFields();//访问所有字段
        List<String> list = new ArrayList<String>();
        for(Field f:fields){
            list.add(f.getName());
        }
        return list;
    }
    //实现通用pojo对象的表格化,通过list操作,反射得到字段与字段值,自动填充表头和表体
    public static void createExcelFromList(List list,OutputStream os){
        if(list==null||list.size()==0)return;
        List<String> props = parsePojoProps(list.get(0));
        //添加表头
        WritableWorkbook book;
        try {
            book = Workbook.createWorkbook(os);
            WritableSheet sheet = book.createSheet("第一页",0);
            for(int i=0;i<props.size();i++){
                sheet.addCell(new Label(i,0,props.get(i)));
            }
            //添加表体
            int rows=1;
            for(Object obj:list){
                //调用ognl取属性值
                int colIndex=0;//列索引
                for(String pro:props){
                    //列、行,ognl取对象的属性,(get方法)
                    sheet.addCell(new Label(colIndex++,rows,Ognl.getValue(pro,obj)+""));
                }
                rows++;//下一行
            }
            book.write();
            book.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值