首页 > 代码库 > ExcelUtil以及导出

ExcelUtil以及导出

工具 ExcelUtil

package com.bjsxt.util;
 
import java.io.FileOutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import javax.naming.spi.DirStateFactory.Result;
 
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
import com.bjsxt.po.Teacher;
 
/**
 *
 * @author zhai
 *excel_test<---->com.bjsxt.util
 *2014-10-23上午12:27:18 Verson-1.0
 */
public class ExcelUtil {
 
 //需要添加标题,  fields  代表User类的属性,   list 代表数据
  public static void write(String[] titleString, String[] fields , List list) throws Exception{
   
   //声明
   HSSFWorkbook workbook=new  HSSFWorkbook();
   //建立excel 和标题(主键)
    HSSFSheet sheet=workbook.createSheet();
    HSSFRow  title = sheet.createRow(0);
   
    for(int i=0; i<titleString.length;i++){
    //遍历标题的行列
     title.createCell(i).setCellValue(titleString[i]);
    }
    //声明受影响的行数
    int count =1;
   
    for(Iterator iterator=list.iterator(); iterator.hasNext();){
     //放置一个动态的数据  reflect
     Object obj=iterator.next();
     //创建一个row
     HSSFRow  row= sheet.createRow(count++);
     //获取dynamic 数据(通用的)
      Class cc= obj.getClass();
      //获取用户属性
      for(int i=0; i<fields.length; i++){
       String fileName = fields[i];  //  id   getId       name  getName
       //获取用户类型属性
       Field filed = cc.getDeclaredField(fileName);
     
       Class  type = filed.getType();
     //获取方法 和方法名
     String methodName= "get"+fileName.substring(0,1).toUpperCase()+fileName.substring(1);
     
     Method  method= cc.getDeclaredMethod(methodName);
     
     Object invoke = method.invoke(obj);
     
     if("Integer".equals(type.getSimpleName())){
      row.createCell(i).setCellValue((Integer)invoke);
     }else if( "String".equals(type.getSimpleName())){
      row.createCell(i).setCellValue((String)invoke);
     }else{
      row.createCell(i).setCellValue("请检查数据或书写格式~-~");
     }
      }
     
      FileOutputStream stream=new FileOutputStream("c:/zsf.xls");
      workbook.write(stream);
      stream.close();
     
    }
  }
 
public static void main(String[] args) throws Exception {
  List<Teacher> list= new ArrayList<Teacher>();
  for(int i=0; i<30;i++){
   list.add(new Teacher(i, "laoliang", "5888"));
  }
  //对用的键值对
  String[] tiString={"主键","姓名","薪水"};
  String[]  fields={"id", "name","salary"};
 
  ExcelUtil.write(tiString, fields, list);
 
 }
}
测试
package com.bjsxt;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public class Test {
 
 public static void main(String[] args) throws IOException {
 
  HSSFWorkbook workbook =new HSSFWorkbook();
 //创建表格
 HSSFSheet sheet=workbook.createSheet();
 //创建  行 列
 HSSFRow row = sheet.createRow(0);
 HSSFCell cell = row.createCell(0);
 //写入资料
 cell.setCellValue("zhaisong88");
 //输出到文件
  FileOutputStream  stream =new FileOutputStream("c:/zsf.xls");
 workbook.write(stream);
 System.out.println("OK");
 
 
 
 
 }
}
 

ExcelUtil以及导出