zoukankan      html  css  js  c++  java
  • easypoi 导入导出

    这次任务是报表的导入导出,总结一下心得。

    1 导入依赖  项目原本就有 

    2 接下来就是使用,用起来也是很简单。一切查找数据都是按照正常逻辑来写。

      导出:

    1 图片

    /**
         * oe下载
         * @param
         * @param response
         * ExcelExportUtil.exportExcel
         */
        @RequestMapping("OeDecodingExcelExport")
        @ResponseBody
        public Result OeDecodingExcelExport(HttpServletResponse response,String startTime,String endTime,Integer logoCode) throws IOException {
            Result result=new Result();
            response.setContentType("text/html; charset=utf-8");
            //查询数据
            List<OeDecoding> oeDecoding = iOeDecoding.oeCodeExcelExport(startTime,endTime,logoCode);
            if(oeDecoding.size()==0){
                result.setResultCode(new ResultCode(-1,"无数据,请重新选择"));
                return result;
            }
            Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("oe码解码", "oe码解码", ExcelType.XSSF),
                    OeDecoding.class, oeDecoding);
            String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd HHmmss"));
            fileName += fileName + "oe码解码";
            fileName = URLEncoder.encode(fileName, "UTF-8");
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
            workbook.write(response.getOutputStream());
            return result;
        }

    核心方法:

     Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("oe码解码", "oe码解码", ExcelType.XSSF),
                    OeDecoding.class, oeDecoding);

    解释:

    第一个参数是title名字,第二个是sheetname名字,ExcelType.XSSF 是固定格式,“OeDecoding.class”,这个是实体类的映射这是主要点。oeDecoding,这个是需要下载的数据,如果只是下载固定模板的话,这个就不要了。

    2 实体类方法注解

    @excel 注解打上就可以实现下载了。还有不同的属性值可以设置,这里可以去看官方文档。

        导入:

     

     核心方法:

    ExcelImportResult<OeDecoding> list = ExcelImportUtil.importExcelMore(file.getInputStream(), OeDecoding.class, params);
    ExcelImportUtil,提供了很多方法,可以进源文件看看。这个不需要些,引入依赖就有了。
    我摘了源文件:
    /**
     * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com)
     *   
     *  Licensed under the Apache License, Version 2.0 (the "License");
     *  you may not use this file except in compliance with the License.
     *  You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     *  Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package cn.afterturn.easypoi.excel;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.List;
    
    import cn.afterturn.easypoi.handler.inter.IReadHandler;
    import org.apache.poi.util.IOUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import cn.afterturn.easypoi.excel.entity.ImportParams;
    import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
    import cn.afterturn.easypoi.excel.imports.ExcelImportService;
    import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel;
    import cn.afterturn.easypoi.exception.excel.ExcelImportException;
    
    /**
     * Excel 导入工具
     * 
     * @author JueYue
     *  2013-9-24
     * @version 1.0
     */
    @SuppressWarnings({ "unchecked" })
    public class ExcelImportUtil {
    
        private ExcelImportUtil() {
        }
    
        private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class);
    
        /**
         * Excel 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean
         * 
         * @param file
         * @param pojoClass
         * @param params
         * @return
         */
        public static <T> List<T> importExcel(File file, Class<?> pojoClass, ImportParams params) {
            FileInputStream in = null;
            try {
                in = new FileInputStream(file);
                return new ExcelImportService().importExcelByIs(in, pojoClass, params, false).getList();
            } catch (ExcelImportException e) {
                throw new ExcelImportException(e.getType(), e);
            } catch (Exception e) {
                LOGGER.error(e.getMessage(), e);
                throw new ExcelImportException(e.getMessage(), e);
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
    
        /**
         * Excel 导入 数据源IO流,不返回校验结果 导入 字段类型 Integer,Long,Double,Date,String,Boolean
         * 
         * @param inputstream
         * @param pojoClass
         * @param params
         * @return
         * @throws Exception
         */
        public static <T> List<T> importExcel(InputStream inputstream, Class<?> pojoClass,
                                              ImportParams params) throws Exception {
            return new ExcelImportService().importExcelByIs(inputstream, pojoClass, params, false).getList();
        }
    
        /**
         * Excel 导入 数据源IO流 字段类型 Integer,Long,Double,Date,String,Boolean
         * 支持校验,支持Key-Value
         * 
         * @param inputstream
         * @param pojoClass
         * @param params
         * @return
         * @throws Exception
         */
        public static <T> ExcelImportResult<T> importExcelMore(InputStream inputstream,
                                                                 Class<?> pojoClass,
                                                                 ImportParams params) throws Exception {
            return new ExcelImportService().importExcelByIs(inputstream, pojoClass, params, true);
        }
    
        /**
         * Excel 导入 数据源本地文件 字段类型 Integer,Long,Double,Date,String,Boolean
         * 支持校验,支持Key-Value
         * @param file
         * @param pojoClass
         * @param params
         * @return
         */
        public static <T> ExcelImportResult<T> importExcelMore(File file, Class<?> pojoClass,
                                                                 ImportParams params) {
            FileInputStream in = null;
            try {
                in = new FileInputStream(file);
                return new ExcelImportService().importExcelByIs(in, pojoClass, params, true);
            } catch (ExcelImportException e) {
                throw new ExcelImportException(e.getType(), e);
            } catch (Exception e) {
                LOGGER.error(e.getMessage(), e);
                throw new ExcelImportException(e.getMessage(), e);
            } finally {
                IOUtils.closeQuietly(in);
            }
        }
    
        /**
         * Excel 通过SAX解析方法,适合大数据导入,不支持图片
         * 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean
         * 
         * @param inputstream
         * @param pojoClass
         * @param params
         * @param handler
         */
        public static void importExcelBySax(InputStream inputstream, Class<?> pojoClass,
                                            ImportParams params, IReadHandler handler) {
            new SaxReadExcel().readExcel(inputstream, pojoClass, params, handler);
        }
    
    }

    不同的方法对应的参数也不同,请对着自己的需求,选择方法。

    总之,方法是很简答的。但是我的需求对上传的数据筛选条件有点多,这里就不放出来了。只是提供一种思路。

     

    
    
    
  • 相关阅读:
    操作系统--怎么实现中断
    操作系统中的描述符和GDT
    使用汇编语言实现memcpy
    Redis命令之setbit
    java webService 服务端的创建 和 客户端代码的生成与使用
    springbooot 项目读取yml配置文件(自定义)
    java自定义注解的使用(校验)
    mysql使用存储过程快速插入百万条数据
    springboot项目集成Mybatisplus配置和使用
    mysql 创建函数的过程和使用
  • 原文地址:https://www.cnblogs.com/zq1003/p/14218259.html
Copyright © 2011-2022 走看看