导出Excel

package com.krkj.util;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.persistence.Entity;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

@Entity
public class GenerateExcel<T> {

    public GenerateExcel() {
    }

    public void exportExcel(List<T> users, Class<?> clazz, String string)
            throws Exception {
        Workbook wb = new HSSFWorkbook();
        Sheet sheet = wb.createSheet("导出用户数据");

        for (int i = 0; i < users.size(); i++) {
            Row row = sheet.createRow(i);

            BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
            PropertyDescriptor[] propertyDescriptors = beanInfo
                    .getPropertyDescriptors();
            int realCellNum = 0;
            for (int j = 0; j < propertyDescriptors.length; j++) {

                PropertyDescriptor propertyDescriptor = propertyDescriptors[j];
                Class<?> propertyType = propertyDescriptor.getPropertyType();

                String simpleName = propertyType.getSimpleName();
                
                Method readMethod = propertyDescriptor.getReadMethod();
                
                if (!"getClass".equals(readMethod.getName())) {
                    Object object = readMethod.invoke(users.get(i),
                            new Object[] {});
                    String value = object.toString();
                    Cell cell = row.createCell(realCellNum++);

                    
                    
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                    switch (simpleName) {
                    case "int":
                        cell.setCellValue(Integer.valueOf(value));
                        break;
                    case "Integer":
                        cell.setCellValue(Integer.valueOf(value));
                        break;
                    case "float":
                        cell.setCellValue(Double.valueOf(value));
                        break;
                    case "Float":
                        cell.setCellValue(Double.valueOf(value));
                        break;
                    case "double":
                        cell.setCellValue(Double.valueOf(value));
                        break;
                    case "Double":
                        cell.setCellValue(Double.valueOf(value));
                        break;
                    case "String":
                        cell.setCellValue(value);
                        break;
                    case "Date":
                        cell.setCellValue(sdf.format(object));
                        break;
                    default:
                    }
                } 
            }
        }

        FileOutputStream fileOut = new FileOutputStream(string);
        wb.write(fileOut);
        wb.close();
        fileOut.close();

    }
}

 

posted @ 2015-09-29 13:44  yangxu6069  阅读(126)  评论(0编辑  收藏  举报