zoukankan      html  css  js  c++  java
  • 经过改良后可以导出超过70000条数据的导出公共excel类

    public static <T> void export(OutputStream os, List<T> obj, String[] head,String[] fidldName)
    throws Exception {
    // 创建工作薄
    WritableWorkbook workbook = Workbook.createWorkbook(os);
    double num =Math.ceil(obj.size()/65000d);
    if (num>1) {
    for (int i =0; i < num; i++) {
    List<T> objj=new ArrayList<T>();
    int max=0;
    int k=0;
    if (obj.size()<=65536) max=obj.size();
    if (obj.size()>65536) max=65536*i+65536;
    if (num-1==i) max=obj.size();
    for (int j = 65536*i; j < max; j++) {
    objj.add(k, obj.get(j));
    k++;
    }
    exportS(os,objj,head,fidldName,(int)num,workbook);
    }
    }else{
    exportS(os,obj,head,fidldName,(int)num,workbook);
    }
    workbook.write();
    workbook.close();
    os.close();
    }
    public static <T> void exportS(OutputStream os, List<T> obj, String[] head,String[] fidldName,int num,WritableWorkbook workbook) throws Exception {

    // 创建新的一页
    WritableSheet sheet = workbook.createSheet("Sheet"+num,num);
    // 创建要显示的具体内容
    // String[] head = HeaderExcel.List;
    for (int i = 0; i < head.length; i++) {
    Label formate = new Label(i, 0, head[i] + "", titleFormat);
    sheet.addCell(formate);
    }
    int i = 0;
    Field field = null;
    for (T t : obj) {
    Object [] objw=new Object[50];
    int k = 0;
    //System.err.println(fidldName.length);

    for (int j = 0; j < fidldName.length; j++) {
    field = t.getClass().getDeclaredField(fidldName[j]);
    field.setAccessible(true);
    if(field.get(t) != null)
    objw[k]=field.get(t);
    else
    objw[k]="-";
    k++;
    }

    for (int j = 0; j < head.length; j++) {
    Label data = new Label(j, 1 + i, "" + objw[j]);
    sheet.addCell(data);
    }
    i++;
    }

    }

  • 相关阅读:
    洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk( 普及-)
    洛谷 P1909 [NOIP2016 普及组] 买铅笔
    全排列问题
    集合的划分(setsub)
    自然数拆分-回溯
    洛谷 P4414 [COCI2006-2007#2] ABC
    洛谷 P5709 【深基2.习6】Apples Prologue
    洛谷 P4326 [COCI2006-2007#1] Herman
    平面分割
    洛谷 P1601 A+B Problem(高精)
  • 原文地址:https://www.cnblogs.com/wanghongjie/p/6116245.html
Copyright © 2011-2022 走看看