我用了jxl操作Excel报错如下:
The method createWorkbook(List) in the type Workbook is not applicable for the arguments (String)createWorkbook这个总报错
The method createWorkbook(List) in the type Workbook is not applicable for the arguments (String)createWorkbook这个总报错
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();
}
}
}最近写的一个工具类,楼主看看可有帮助