今天小编又为大家带来了好用的工具类啦 那就是导出Excle


public class Excel {

public  final static <T> String exportExcel(String fileName,String sheetName,String[] Title, List<T> listContent,HttpServletRequest request,HttpServletResponse response){

String result="系统提示:Excel文件导出成功!"; 

//输出到excel

try {

OutputStream os= new BufferedOutputStream(response.getOutputStream());  

  response.reset();// 清空输出流   

  final String userAgent = request.getHeader("USER-AGENT");  

  String finalFileName = null;  

if(StringUtils.contains(userAgent, "MSIE")){//IE浏览器  

finalFileName = URLEncoder.encode(fileName,"UTF8");  

}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器  

finalFileName = new String(fileName.getBytes(), "ISO8859-1");  

}else{  

finalFileName = URLEncoder.encode(fileName,"UTF8");//其他浏览器  

}  

response.setHeader("Content-disposition", "p_w_upload; filename=\""+ finalFileName+"\"");

// 设定输出文件头      

response.setContentType("application/msexcel");// 定义输出类型

//** **********创建工作簿************ *//

 HSSFWorkbook workbook = new HSSFWorkbook();

 


 //创建工作表

 HSSFSheet sheet = workbook.createSheet(sheetName);

 //设置行标题

 HSSFRow titleRow = sheet.createRow(0);

//设置excel表的表头

 for(int i=0;i<Title.length;i++){

 sheet.setColumnWidth(i, 4000);

 //设置单元格中的数据

 titleRow.createCell(i).setCellValue(Title[i]);

 }

 //设置excel表中的剩余的单元格

 //获取传递过来的正文的数据listContent

 for(int j=0;j<listContent.size();j++){

 //list中传递过来的是数据表中的正文部分

 List<String> cellValues = getValue(listContent.get(j));

 HSSFRow contentRow = sheet.createRow(j+1);

 //设置表中的数据

 for(int k=0;k<cellValues.size();k++){

 contentRow.createCell(k).setCellValue(cellValues.get(k));

 }

}

 //将生成的excel表写入到流中去

 workbook.write(os);

 os.flush();

 os.close();

  

} catch (Exception e) {

result="系统提示:Excel文件导出失败,原因:"+ e.toString();

  System.out.println(result); 

e.printStackTrace();

}

//返回结果

return result;

}

//获得实体类中的属性和值

public static List<String> getValue(Object object) throws Exception{

Field[] fields = object.getClass().getDeclaredFields();//获取属性名称数组  

List<String> stringList = new ArrayList<>();

for (int i = 0; i < fields.length; i++) {  

Object valueObj = getFieldValue(object,fields[i].getName());//获取属性值  

if (valueObj != null) {

String name = fields[i].getName(); // 获取属性的名字

name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法

String type = fields[i].getGenericType().toString(); // 获取属性的类型

if (type.equals("class java.util.Date")) {

SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

valueObj = sim.format(valueObj);

                }

stringList.add(valueObj.toString());

}

return stringList;

}

/** 

   * 通过反射,用属性名称获得属性值 

   * @param thisClass 需要获取属性值的类 

   * @param fieldName 该类的属性名称 

   * @return 

   */  

   public static Object getFieldValue(Object thisClass, String fieldName)  

   {  

       Object value = new Object();  

       Method method = null;  

       try {  

           String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);  

           method = thisClass.getClass().getMethod("get" + methodName);  

           value = method.invoke(thisClass);  

       } catch (Exception e) {  

           e.printStackTrace();  

       }    

       return value;  

   }   

}