Poi+annotion 实现把 javaBean 写入Excel

1.设计注解

注解使用到 FIELD 上

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.FIELD)

public @interface Excel{

    String name;

}

2,设计javaBean

public class OutDataBean{

  @Excel(name="No")

  private String no;

  @Excel(name="before")

  private String bef;

  @Excel(name="after")

  private String aft;

  ........//getter setter

}

3.设计注解类的实现

public class ExcelUtil<T> {

  Class<T> clazz;

  public ExcelUtil(Class<T> clazz){

    this.clazz = clazz;

  }

  // convert java bean list to excel.xlsx

  public boolean exportExcel(String file,Sthing sheetNm,List<T> datas) throws Exception {

    XSSFWorkBook xfWb = new XSSFWorkBook();

    XSSFSheet createSheet = xfWb.createSheet(sheetNm);

    int rowIndex = 0;

    XSSFRow createRow = createSheet.createRow(rowIndex);

    //

    Map<Integer,Field> fieldsMap = new HashMap<>();

    List<Field> allFields = getClazzField(clazz,null);

    int colIndex = 0 ;
    // 写入header内容,并设置cell格式

    for(Field field : allFields){

      // 只处理有Excel注解的对象

      if(!field.isAnnotationPresent(Excel.class)) continue;

      field.setAccessible(true);

      fieldsMap.put(colIndex,field);

      XSSFCell createCell createRow.createCell(colIndex);

      createCell.setCellValue(field.getName());

      Map<String,CellStyle> createStyle = createStyles(xfWb);

      createCell.setCellStyle(createStyle.get("green_center"));

      colIndex +=1;

    }

    rowIndex +=1;

    // 写入明细行数据

    for(T t : datas){

      XSSFRow dataRow = createSheet.createRow(rowIndex );

      rowIndex +=1;

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

        XSSFCell dataCell = dataRow.createCell(j);

        Field field = fieldsMap.get(j);

        dataCell.setCellValue(null == field.get(t) ? "" : field.get(t).toString());

     }

  }
  //write file

  try(FileOutputStream fos = new FileOutputStream()){

    xfWb.write(fso);

  } catch (Exception e){ return false; }

  return true;

 }

  // get all fields

  private List<Field> getClazzField(Class<?> clazz,List<Field> fields){

    if(Objects.isNull(fields)) fiedls = new ArrayList<>();

    Field[] fieldArr = clazz.getDeclaredFields();

    if(!Objects.isNull(fieldArr)) fields.addAll(Arrays.asList(fieldArr));

    //

    if(Objects.nonNull(clazz.getSuperclass) && !clazz.getSuperclass().equals(Objects.class))

      getClazzField(clazz.getSuperclass(),fields);



    return fields;

  }


  // style

  private Map<String,CellStyle> createStyles(Workbook wb){

    Map<String,CellStyle> styles = new HashMap<>();

    //

    Font f =wb.createFont();

    f.setFontName("MS UI Gothic");

    //

    CellStyle style;

    style = wb.createCellStyle();

    style.setFillForegroundColor(IndexedColors.LiGHT_GREEN.getIndex());

    style.setAlignment(HorizontalAlignment.CENTER);

    style.setVerticalAlignment(VerticalAlignment.CENTER);

    style.setFont(f);

    styles.put("green_center",style);

    //add other style ......

    return styles;

  }

}

5.调用

ExcelUtil<OutDataBean> util = new ExcelUtil<>(OutDataBean.class);

//

List<OutDataBean> datas = new ArrayList<>();

for(int i=0;i<10;i++){

  OutDataBean b=new OutDataBean();

  b.setNo(Sting.valueOf(i));

  b.setBef("Before" + i);

  b.setAft("After"+(i+100));

    datas.add(b);

}

try{

  util.exportExcel("/test.xlsx","test",datas);

}catch(Exception e){

  e.printStackTrance();

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel是一种常用的办公软件,可以用来制作各类表格和图表。而PDF是一种便捷的文件格式,具有跨平台、可读性好等特点。因此,将Excel文件转换为PDF格式,可以方便地与他人共享和阅读。下面是使用POI和iTextPDF库将Excel文件转换为PDF的步骤: 1. 导入POI和iTextPDF库。这两个库可以通过在工程中引入相应的jar文件来实现。 2. 读取Excel文件并创建一个工作簿。使用POI库的Workbook类可以读取和操作Excel文件。 3. 遍历Excel文件中的每一张表格,并将表格数据写入PDF文件中。使用POI库的Sheet类和Row类来访问表格和行数据。 4. 创建一个PDF文档对象,并设置相关属性。使用iTextPDF库的Document类可以创建PDF文档,并设置页面大小、标题和作者等属性。 5. 将Excel表格数据写入PDF文件中。通过遍历Excel表格中的单元格,并使用iTextPDF库的Paragraph类将数据写入PDF文件。 6. 关闭文档对象,保存并关闭Excel文件。使用iTextPDF库的PdfWriter类将文档对象写入PDF文件,而使用POI库的Workbook类可以保存并关闭Excel文件。 7. 完成转换,生成的PDF文件即可在设备上使用。 这就是使用POI和iTextPDF库将Excel文件转换为PDF的基本步骤。转换后的PDF文件可以方便地共享和阅读,方便管理和交流。这个方法非常适用于需要将大量Excel表格转换成PDF文档的场景,如报表生成、数据分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值