bean对象中有延迟加载的属性,此时bean.getClass().getDeclaredFields(),获取到的不是bean对象的声明字段?

public  <T> String CreateExcelDemo(List<T> list) throws Exception {//方法参数是查询数据库得到的对象集合
    String fileName = null;
    // 第一步,创建一个webbook,对应一个Excel文件  
    HSSFWorkbook wb = new HSSFWorkbook();
    // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet  
    HSSFSheet sheet = wb.createSheet("系统日志");
    // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short  
    HSSFRow row = sheet.createRow((int) 0);
    // 第四步,创建单元格,并设置值表头 设置表头居中  
    HSSFCellStyle style = wb.createCellStyle();


    Class clazz = list.get(0).getClass();
    //获取声明字段
    Field[] fields = clazz.getDeclaredFields();

    //第五步,填充表中信息
    //列名
    HSSFCell cell = row.createCell((short) 0);
    cell.setCellValue("序号");
    for (int i = 0; i < fields.length; i++) {
        cell = row.createCell((short) i+1);
        cell.setCellValue(fields[i].getName());
    }

    //每一列
    for (int i = 0; i < list.size(); i++) {
        Object obj = list.get(i);
        // 第四步,创建单元格,并设置值  
        row = sheet.createRow((int) i + 1);
        HSSFCell celli = row.createCell((short) 0);
        row.createCell((short) 0).setCellValue(i+1);
        for (int j = 0; j < fields.length; j++) {
            String filedName = fields[j].getName();
            row.createCell((short) j+1).setCellValue( clazz.getMethod("get" +filedName.substring(0, 1).toUpperCase().concat(filedName.substring(1))).invoke(obj).toString());
        }

    }
    // 第六步,将文件存到指定位置  
    try {
        fileName = "J:\\idea_project2\\ssm_project\\ssm_project_web\\src\\download\\" + UUID.randomUUID().toString() + ".xls";
        FileOutputStream fout = new FileOutputStream(fileName);
        wb.write(fout);
        fout.close();
        wb.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return fileName;
}


慕侠5502443
浏览 995回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java