日期:2014-05-17  浏览次数:20793 次

导出Excel问题,第一条数据不见了
public void exportExcel(String title, Collection<T> dataset,  
  OutputStream out) {  
  // 声明一个工作薄  
  try {  
  //首先检查数据看是否是正确的  
  Iterator<T> its = dataset.iterator();  
  if(dataset==null||!its.hasNext()||title==null||out==null)  
  {  
  throw new Exception("传入的数据不对!");  
  }  
  //取得实际泛型类  
  T ts = (T) its.next();  
  Class tCls = ts.getClass();  
   
  HSSFWorkbook workbook = new HSSFWorkbook();  
  // 生成一个表格  
  HSSFSheet sheet = workbook.createSheet(title);  
  // 设置表格默认列宽度为15个字节  
  sheet.setDefaultColumnWidth(15);  
  // 生成一个样式  
  HSSFCellStyle style = workbook.createCellStyle();  
  // 设置标题样式  
  style = ExcelStyle.setHeadStyle(workbook, style);  
   
  // 得到所有字段  
   
  Field filed[] = ts.getClass().getDeclaredFields();  
  // 标题  
  List<String> exportfieldtile = new ArrayList<String>();  
  // 导出的字段的get方法  
  List<Method> methodObj = new ArrayList<Method>();  
  // 遍历整个filed  
  for (int i = 0; i < filed.length; i++) {  
  Field f = filed[i];  
  ExcelAnnotation exa = f.getAnnotation(ExcelAnnotation.class);  
  // 如果设置了annottion  
  if (exa != null) {  
  String exprot = exa.exportName();  
  // 添加到标题  
  exportfieldtile.add(exprot);  
  // 添加到需要导出的字段的方法  
  String fieldname = f.getName();  
  String getMethodName = "get"  
  + fieldname.substring(0, 1).toUpperCase()  
  + fieldname.substring(1);  
   
  Method getMethod = tCls.getMethod(getMethodName,  
  new Class[] {});  
   
   
  methodObj.add(getMethod);  
  }  
  }  
  // 产生表格标题行  
  HSSFRow row = sheet.createRow(0);  
  for (int i = 0; i < exportfieldtile.size(); i++) {  
  HSSFCell cell = row.createCell(i);  
  cell.setCellStyle(style);  
  HSSFRichTextString text = new HSSFRichTextString(  
  exportfieldtile.get(i));  
  cell.setCellValue(text);  
  }  
   
   
  int index = 0;