我用了jxl操作Excel报错如下:
The method createWorkbook(List) in the type Workbook is not applicable for the arguments (String)createWorkbook这个总报错

解决方案 »

  1.   


    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();
    }
    }
    }最近写的一个工具类,楼主看看可有帮助
      

  2.   

    你的错误说明是你调用方法传参出错了,createWorkbook是需要一个String的参数,但是你传入一个List,这个肯定会报错