通过模板生成Excel表格——XLSTransformer

通过模板生成Excel表格——XLSTransformer/***根据模版生成保存到指定位置*@parampathTemplateFileName*@paramlist*@parampathResultFileName*@return*/publicstaticbooleancreateExcel(StringpathTemplateFileNam…

大家好,又见面了,我是你们的朋友全栈君。

依赖:

		<dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-reader</artifactId>
            <version>1.0</version>
        </dependency>
	/** * 根据模版生成保存到指定位置 * @param pathTemplateFileName 模版路径 * @param list * @param pathResultFileName 存放路径 * @return */
    public static boolean createExcel(String pathTemplateFileName, List<?> list, String pathResultFileName){ 
   
        //创建XLSTransformer对象
        XLSTransformer transformer = new XLSTransformer();
        //获取java项目编译后根路径
        //URL url = ExcelUtil.class.getClassLoader().getResource("");
        //得到模板文件路径
        //String srcFilePath = url.getPath() + templateFileName;
        //String destFilePath = url.getPath() + resultFileName;
        Map<String,Object> beanParams = new HashMap<String,Object>();
        beanParams.put("list", list);
        try { 
   
            //生成Excel文件
            transformer.transformXLS(pathTemplateFileName, beanParams,pathResultFileName );
            return true;
        } catch (Exception e) { 
   
            e.printStackTrace();
            return false;
        }

    }

    /** * 根据模版生成 excel的工作簿 * @param pathTemplateFileName * @param list * @return */
    public static Workbook createHSSFWorkbook(String pathTemplateFileName, List<?> list){ 
   
        //创建XLSTransformer对象
        XLSTransformer transformer = new XLSTransformer();

        Map<String,Object> beanParams = new HashMap<String,Object>();
        beanParams.put("list", list);
        Workbook hssfWorkbook=null;
        try { 
   
            InputStream is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
            hssfWorkbook = transformer.transformXLS(is, beanParams);
            is. close();
        } catch (Exception e) { 
   
            e.printStackTrace();

        }
        return hssfWorkbook;
    }


    /** * 写到输入流中 * @param pathTemplateFileName * @param list */
    public static InputStream getExceInput(String pathTemplateFileName, List<?> list) throws Exception { 
   
        XLSTransformer transformer = new XLSTransformer();
        Map<String,Object> beanParams = new HashMap<String,Object>();
        beanParams.put("dateFormat",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        beanParams.put("list", list);
        InputStream inputStream = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
        transformer.transformXLS(inputStream, beanParams);
        return inputStream;
    }
    public static boolean setExceOutput(String pathTemplateFileName, List<?> list,OutputStream outputStream){ 
   

        XLSTransformer transformer = new XLSTransformer();
        Map<String,Object> beanParams = new HashMap<String,Object>();
        InputStream is=null;
        try { 
   
            beanParams.put("list", list);
            is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
            Workbook wb = transformer.transformXLS(is, beanParams);
            wb.write(outputStream);
            return true;
        }catch (ParsePropertyException ex){ 
   
            ex.printStackTrace();
        }catch (InvalidFormatException ex){ 
   
            ex.printStackTrace();
        }catch (IOException ex){ 
   
            ex.printStackTrace();
        } finally { 
   
            if (is!=null){ 
   
                try { 
   
                    is.close();
                } catch (IOException e) { 
   
                    e.printStackTrace();
                }
            }
        }
        return false;
    }
    /** * 装配 返回数据流水 * @param pathTemplateFileName * @param list * @return */
    public static   byte[] getExceByte(String pathTemplateFileName, List<?> list){ 
   
        //创建XLSTransformer对象
        XLSTransformer transformer = new XLSTransformer();
        Map<String,Object> beanParams = new HashMap<String,Object>();
        beanParams.put("list", list);
        byte[] bytes=null;
        InputStream is=null;
        ByteArrayOutputStream out=null;
        try { 
   
            is = new BufferedInputStream(new FileInputStream(pathTemplateFileName));
            Workbook wb = transformer.transformXLS(is, beanParams);
            out = new ByteArrayOutputStream();
            wb.write(out);
            bytes = out.toByteArray();
        } catch (Exception e) { 
   
            e.printStackTrace();
        }finally { 
   
            try { 
   
                if (is!=null) { 
   
                    is.close();
                }
            } catch (IOException e) { 
   
                e.printStackTrace();
            }
            try { 
   
                if (out!=null) { 
   
                    out.close();
                }
            } catch (IOException e) { 
   
                e.printStackTrace();
            }
        }
        return bytes;
    }

    /** *根据工作博导出集合对象 * @param wb * @param sheetAt 解析那个sheet页 * @param statIndex 那一行开始 * @param tClass 解析目标对象 * @param <T> * @return * @throws IllegalAccessException * @throws InstantiationException */
    public static <T> List<T> getList(Workbook wb,int sheetAt,int statIndex,Class<T> tClass ) throws IllegalAccessException, InstantiationException { 
   
        List<T> list=new ArrayList<>();
        Sheet sheet = wb.getSheetAt(sheetAt);
        int lastRowNum = sheet.getLastRowNum();
        for (int i=statIndex;i<=lastRowNum;i++){ 
   
            Row row = sheet.getRow(i);
            if(row==null){ 
   
                continue;
            }
            T t= tClass.newInstance();
            Field[] declaredFields = tClass.getDeclaredFields();
            for (Field f : declaredFields) { 
   
                f.setAccessible(true); //设置些属性是可以访问的
                //Object val = f.get(t);//得到此属性的值
                //String name = f.getName();//获得属性名
                ExcelIndex annotation = f.getAnnotation(ExcelIndex.class);
                if (annotation==null){ 
   
                    continue;
                }
                Cell cell = row.getCell(annotation.value());
                f.set(t,getFCellValue(cell));
            }
            list.add(t);
        }
        return list;
    }


    /** * 获取单元格的值 * @param cell * @return */
    private static   Object getFCellValue(Cell cell){ 
   
        if(cell==null){ 
   
            return null;
        }
        switch (cell.getCellType()) { 
   
            case 0: // 数字
                return cell.getNumericCellValue();
            case 1: // 字符串
                return cell.getStringCellValue();
            case 4: // Boolean
                return cell.getBooleanCellValue();
            case 2: // 公式
                return    cell.getCellFormula();
            case 3: // 空值
                return null;
            case 5: // 故障
                return null;
            default://未知
                return null;
        }
    }

    public static void main(String[] args) throws Throwable { 
   


        createExcel("D:/555.xlsx",new ArrayList<>(),"D:/test.xlsx");

    }




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163867.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • [随笔] IE8Beta2 的标准是不是太高了!

    [随笔] IE8Beta2 的标准是不是太高了!昨天安装了ie8beta2,发现网上支付都无法操作。支付宝无法使用。切换兼容模式也没有效果。各位高手有知道怎么回事的吗?请指教!!!!!转载于:https://www.cnblogs.com/zangdalei/archive/2008/08/29/1279160.html…

    2022年10月26日
  • 迁移学习之ResNet50和ResNet101(图像识别)

    迁移学习之ResNet50和ResNet101(图像识别)文章目录1.实现的效果:2.主文件TransorResNet.py:1.实现的效果:实际的图片:(1)可以看到ResNet50预测的前三个结果中第一个结果为:whippet(小灵狗)(2)ResNet50预测的前三个结果中第一个结果为:Walker_hound(步行猎犬)(3)**从结果上来看,比之前的VGG16和VGG19预测的效果都要好(这里虽然不知道图片中的够具体是什么狗,但是结果都预测成了“狗”的类别)。**2.主文件TransorResNet.py:importosimpo

  • Mysql 日期格式转换

    Mysql 日期格式转换DATE_FORMAT(date,format)根据格式串format格式化日期或日期和时间值date,返回结果串。 可用DATE_FORMAT()来格式化DATE或DATETIME值,以便得到所希望的格式。根据format字符串格式化date值:

  • spring 注解验证@NotNull等使用方法「建议收藏」

    spring 注解验证@NotNull等使用方法「建议收藏」常用标签@Null被注释的元素必须为null@NotNull被注释的元素不能为null@AssertTrue被注释的元素必须为true@AssertFalse被注释的元素必须为false@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(

  • java数组反转Reverse

    java数组反转Reverse三种反转数组的方法:publicclassReverseArray{publicvoidreverse(int[]arr){for(inti=0;i

  • 查看服务器硬件配置信息命令_服务器硬件参数

    查看服务器硬件配置信息命令_服务器硬件参数本次由于需要搭建一套环境,但是所需硬件配置不足,需要进行统计采购。那么就需要得知服务器现有配置,所以这次会介绍些常用的命令和工具来查询硬件信息。其实也可以通过像DELL厂商的IDRAC控制台来获取这些

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号