zoukankan      html  css  js  c++  java
  • EasyExcel读取excel文件

    1、导入jar

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.1.7</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.17</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.17</version>
            </dependency>
    

     2、DEMO

    import com.alibaba.excel.EasyExcel;
    import com.alibaba.excel.ExcelReader;
    import com.alibaba.excel.read.metadata.ReadSheet;
    import org.junit.Test;
    
    import java.io.*
    
    public class ExcelExcutor {
    
        @Test
        public void stripeDataRead() throws IOException {
    
            File file = new File("/Users/Downloads/js_20201207.js");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            String fileName = "/Users/didi/Downloads/20201207.csv";
            ExcelReader excelReader = null;
            try {
                excelReader = EasyExcel.read(fileName, StripeData.class, new StripeDataListener(fileOutputStream)).build();
                ReadSheet readSheet = EasyExcel.readSheet(0).build();
                excelReader.read(readSheet);
            } finally {
                if (excelReader != null) {
                    excelReader.finish();
                }
                fileOutputStream.close();
            }
        }
    }
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.util.Date;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class StripeData {
        @ExcelProperty(value = "_id", index = 0)
        private String _id;
        private String created;
        private String card_exp_month;
        private String card_exp_year;
        private String card_bin;
        private String card_last_4;
        private String amount;
        private String currency;
        private String card_country;
        private String card_issuer;
        private String card_funding;
        private String card_network;
        private String reference;
        private String partner;
    
        public String get_id() {
            return _id;
        }
    
        public void set_id(String _id) {
            this._id = _id;
        }
    
        public String getCreated() {
            return created;
        }
    
        public void setCreated(String created) {
            this.created = created;
        }
    
        public String getCard_exp_month() {
            return card_exp_month;
        }
    
        public void setCard_exp_month(String card_exp_month) {
            this.card_exp_month = card_exp_month;
        }
    
        public String getCard_exp_year() {
            return card_exp_year;
        }
    
        public void setCard_exp_year(String card_exp_year) {
            this.card_exp_year = card_exp_year;
        }
    
        public String getCard_bin() {
            return card_bin;
        }
    
        public void setCard_bin(String card_bin) {
            this.card_bin = card_bin;
        }
    
        public String getCard_last_4() {
            return card_last_4;
        }
    
        public void setCard_last_4(String card_last_4) {
            this.card_last_4 = card_last_4;
        }
    
        public String getAmount() {
            return amount;
        }
    
        public void setAmount(String amount) {
            this.amount = amount;
        }
    
        public String getCurrency() {
            return currency;
        }
    
        public void setCurrency(String currency) {
            this.currency = currency;
        }
    
        public String getCard_country() {
            return card_country;
        }
    
        public void setCard_country(String card_country) {
            this.card_country = card_country;
        }
    
        public String getCard_issuer() {
            return card_issuer;
        }
    
        public void setCard_issuer(String card_issuer) {
            this.card_issuer = card_issuer;
        }
    
        public String getCard_funding() {
            return card_funding;
        }
    
        public void setCard_funding(String card_funding) {
            this.card_funding = card_funding;
        }
    
        public String getCard_network() {
            return card_network;
        }
    
        public void setCard_network(String card_network) {
            this.card_network = card_network;
        }
    
        public String getReference() {
            return reference;
        }
    
        public void setReference(String reference) {
            this.reference = reference;
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = partner;
        }
    }
    
    import com.alibaba.excel.context.AnalysisContext;
    import com.alibaba.excel.event.AnalysisEventListener;
    import com.alibaba.fastjson.JSON;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class StripeDataListener extends AnalysisEventListener<StripeData> {
        /**
         * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收
         */
        private static final int BATCH_COUNT = 5;
        List<StripeData> list = new ArrayList<StripeData>();
        FileOutputStream fileOutputStream;
    
        public StripeDataListener(FileOutputStream fileOutputStream) {
            this.fileOutputStream = fileOutputStream;
        }
    
        /**
         * 这个每一条数据解析都会来调用
         *
         * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}
         * @param context
         */
        @Override
        public void invoke(StripeData data, AnalysisContext context) {
            try {
                StringBuffer sb = new StringBuffer();
    
                String created = data.getCreated();
                created = created.replace("T", " ").replace("Z", " ");
                if (created.contains(".")) {
                    created = created.substring(0, created.indexOf("."));
                }
                data.setCreated(created);
                sb.append("db.stripe_success.insert(").append(JSON.toJSONString(data).replace("_id", "charge_id")).append(");");
                fileOutputStream.write(sb.toString().getBytes());
            } catch (IOException e) {
                e.printStackTrace();
            }
            list.add(data);
            // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
            if (list.size() >= BATCH_COUNT) {
                saveData();
                // 存储完成清理 list
                list.clear();
            }
        }
    
        /**
         * 所有数据解析完成了 都会来调用
         *
         * @param context
         */
        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            // 这里也要保存数据,确保最后遗留的数据也存储到数据库
            saveData();
        }
    
        /**
         * 加上存储数据库
         */
        private void saveData() {
        }
    }
    
  • 相关阅读:
    [收藏]利用ASP.NET技术动态生成HTML页面
    [收藏]为DataGrid添加CheckBox控件
    Html代码中table跨2行和跨2列的用法
    常用的匹配正则表达式和实例
    一个在DotNet下和Java下都通用的加密类!
    如何动态加载js文件?
    多个域下共享Cookie的实现
    [收藏]2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
    [总结]取得Web程序和非Web程序的根目录的N种取法(C#)
    MSN错误代码(error coed)解决大全
  • 原文地址:https://www.cnblogs.com/use-D/p/14097757.html
Copyright © 2011-2022 走看看