当前位置: 首页 > news >正文

石家庄网站外包公司商务信息网站

石家庄网站外包公司,商务信息网站,软文营销文章范文,南昌网站建设电话EasyExcel导入/导出Excel文件简单写法 1、导入依赖 2、创建简单导入、导出demo 3、创建类 继承AnalysisEventListener&#xff08;导入Excel监听解析表格数据&#xff09; 4、创建类 基于注解 自定义Excel导出模版 1、导入EasyExcel依赖 <!--导入EasyExcel…

EasyExcel导入/导出Excel文件简单写法


1、导入依赖
2、创建简单导入、导出demo
3、创建类 继承AnalysisEventListener(导入Excel监听解析表格数据)
4、创建类 基于注解 自定义Excel导出模版

1、导入EasyExcel依赖
        
        <!--导入EasyExcel依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
        </dependency>

2、创建简单导入、导出demo

import com.alibaba.excel.EasyExcel;
import com.google.common.collect.Lists;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName ExcelTest
 * @Descripition easyExcel 导入/导出
 * @Author admin
 * @Date 2023/10/9 13:56
 */
public class ExcelTest {

    public static void main(String[] args) {

        ExcelTest excelTest = new ExcelTest();

        // easyExcel 导入Excel表格简单 : Demo
        excelTest.excelReadUtil();

        // easyExcel 导出Excel表格简单 : Demo
        excelTest.excelWriteUtil();

    }


    /**
     * easyExcel 导入Excel表格简单 : Demo
     */
    public void excelReadUtil() {

        // Excel文件地址(自定义个excel文件夹)
        String fileName = "D:\\test\\test001\\desktop\\excel_test.xlsx";
        //记录开始读取Excel时间,也是导入程序开始时间
        long startReadTime = System.currentTimeMillis();
        System.out.println("------开始读取Excel的Sheet时间(包括导入数据过程):" + startReadTime + "ms------");
        //读取所有Sheet的数据.每次读完一个Sheet就会调用这个方法
        /*List<Object> list = EasyExcel.read(fileName, new CustomListener()).headRowNumber(1).doReadAllSync();
        for (Object o : list) {
            System.out.println(o);
        }*/

        // EasyExcel.read(fileName).doReadAll();
        // 多sheet页读取(所有的sheet页)
        // EasyExcel.read(fileName, new CustomListener()).doReadAll();
        // 读取第一个sheet页
        EasyExcel.read(fileName, new CustomListener()).sheet().doRead();
        long endReadTime = System.currentTimeMillis();
        System.out.println("------结束读取Excel的Sheet时间(包括导入数据过程):" + endReadTime + "ms------");
        System.out.println("------读取Excel的Sheet时间(包括导入数据)共计耗时:" + (endReadTime - startReadTime) + "ms------");

    }

Excel导入截图:

控制台输出截图:


    /**
     * easyExcel 导出Excel表格简单 : Demo
     */
    public void excelWriteUtil() {
        //1、创建一个文件对象
        File excelFile = new File("D:\\test\\test001\\desktop\\excel_test1001.xlsx");
        //2、判断文件是否存在,不存在则创建一个Excel文件
        if (!excelFile.exists()) {
            try {
                excelFile.createNewFile();//创建一个新的文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //3、指定需要那个class去写。然后写到第一个sheet,名字为模版,然后文件流会自动关闭
        EasyExcel.write(excelFile, ExcelTemplate.class).sheet("订单模版").doWrite(queryToExcel());
    }


    /**
     * 1、查询数据库获取导出的数据集合
     * 2、集合转换导出模版实体集合:ExcelTemplate
     *
     * @return
     */
    public List<ExcelTemplate> queryToExcel() {
        // 1、查询数据库获取导出的数据集合
        // 模拟业务代码,获取数据集
        List<ExcelTemplate> orders = Lists.newArrayList();
        for (int i = 0; i < 50; i++) {
            ExcelTemplate template1 = new ExcelTemplate(1000L + i, "订单01" + i, "商品名称" + i, "sk1001" + i, 36L + i, 50L + i, "收件人" + i, "北京科技园" + i);
            orders.add(template1);
        }

        // 2、集合转换导出模版实体集合:ExcelTemplate
        List<ExcelTemplate> excels = new ArrayList<>();
        //遍历数据集,导出Excel
        for (int i = 0; i < orders.size(); i++) {
            ExcelTemplate order = orders.get(i);
            ExcelTemplate data = new ExcelTemplate();
            data.setOrderNum(order.getOrderNum());
            data.setOrderName(order.getOrderName());
            data.setGoodsName(order.getGoodsName());
            data.setGoodsNum(order.getGoodsNum());
            data.setPrice(order.getPrice());
            data.setNum(order.getNum());
            data.setUserName(order.getUserName());
            data.setAddress(order.getAddress());
            excels.add(data);
        }
        return excels;
    }

}

Excel导出截图:

3、创建类 继承AnalysisEventListener(导入Excel监听解析表格数据)

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.assertj.core.util.Lists;

import java.util.List;
import java.util.Map;

/**
 * @ClassName CustomListener
 * @Descripition 导入Excel监听解析表格数据
 * @Author admin
 * @Date 2023/10/9 15:40
 */
@Slf4j
public class CustomListener extends AnalysisEventListener {

    // 处理数据: 分批导入阈值
    private static final Long size = 8L;

    // private List<Map<String, String>> list = Lists.newArrayList();
    private List<Object> list = Lists.newArrayList();


    // 每解析一行数据,该方法会被调用一次
    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        log.info("Excel每解析一行数据,该方法(invoke)会被调用一次 data : {}", JSON.toJSONString(o));
        // int size = analysisContext.readRowHolder().getCellMap().entrySet().size();
        // System.out.println(size);

        list.add(o);
        if(list.size() >= CustomListener.size){
            for (Object o1 : list) {
                System.out.println(o1);
            }
            System.out.println("处理数据: 分批导入阈值: " + size);
            System.out.println();
            System.out.println();
            list.clear();
        }
    }


    // 全部解析完成被调用
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

        System.out.println("最后剩余数据;不够分割 长度 : " + list.size());
        if(CollectionUtils.isNotEmpty(list)){
            for (Object o : list) {
                System.out.println(o);
            }
            System.out.println();
            list.clear();
        }
        System.out.println("解析数据完成!!!");
        // System.out.println("解析数据完成!!!");
    }
}

4、创建类 基于注解 自定义Excel导出模版

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;

/**
 * @ClassName ExcelTemplate
 * @Descripition 导出模版
 * @Author admin
 * @Date 2023/10/9 18:14
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@HeadRowHeight(value = 50) // 头部行高
@ContentRowHeight(value = 25) // 内容行高
@ColumnWidth(value = 25) // 列宽
// 头背景设置成红色 IndexedColors.RED.getIndex()
// @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 10)
// 头字体设置成20, 字体默认宋体
@HeadFontStyle(fontName = "仿宋", fontHeightInPoints = 20)
// 头部边框实线
@HeadStyle(borderTop = BorderStyleEnum.THICK,
        borderBottom = BorderStyleEnum.THICK,
        borderLeft = BorderStyleEnum.THICK,
        borderRight = BorderStyleEnum.THICK)
// 内容的背景设置成绿色  IndexedColors.GREEN.getIndex()
// @ContentStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 17)
// 内容字体设置成20, 字体默认宋体
@ContentFontStyle(fontName = "楷体", fontHeightInPoints = 20)
// Excel设置内容字体是否水平居中、边框实线
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER,
        borderTop = BorderStyleEnum.MEDIUM,
        borderBottom = BorderStyleEnum.MEDIUM,
        borderLeft = BorderStyleEnum.DOUBLE,
        borderRight = BorderStyleEnum.DOUBLE)
public class ExcelTemplate {


    // 字符串的头背景设置成粉红 IndexedColors.PINK.getIndex()
    // @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 14)
    // 字符串的头字体设置成20
    // @HeadFontStyle(fontHeightInPoints = 20)
    // 字符串的内容背景设置成天蓝 IndexedColors.SKY_BLUE.getIndex()
    // @ContentStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 40)
    // 字符串的内容字体设置成20,默认宋体
    // @ContentFontStyle(fontName = "宋体", fontHeightInPoints = 20)
    // 设置是否水平居中
    // @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT)
    @ExcelProperty("订单编码")
    private Long orderNum;

    @ExcelProperty("订单名称")
    private String orderName;

    @ExcelProperty("商品名称")
    private String goodsName;

    @ExcelProperty("商品编码")
    private String goodsNum;

    @ExcelProperty("价格")
    private Long price;

    @ExcelProperty("数量")
    private Long num;

    @ExcelProperty("用户名称")
    private String userName;

    @ColumnWidth(value = 80) // 列宽
    @ExcelProperty("收货地址")
    private String address;


}
 

http://www.yayakq.cn/news/257149/

相关文章:

  • 瑞安做企业网站找哪家如皋网站建设
  • 公司网站设计费计入什么科目seo网络推广方法
  • 哪个网站做投票链接模板好看2023年适合小学生的新闻有哪些
  • 中国建设银行亚洲网站装修设计师培训班
  • 厦门网站建设外包维护特效型网站
  • 环保公司网站架构怎么做公司网站 自己是空间服务商 cms
  • 网站制作图书网站建设整体方案
  • 网站建设从入门到精通 网盘笔记本做网站服务器
  • 网站受到攻击 怎么做在线教育网站开发方案
  • 山西网站开发建设昆明旅游网页设计
  • 江西建设信息港网站泰安手机网站建设
  • 动漫网站建设的目的中国免费网站服务器免费下载
  • 网站建设群网站建设 业务
  • 成都企业网站备案流程python培训班
  • 关键词网站排名顾问网络推广外包sem营销外包
  • 新建网站的价格什么网站能让小孩做算术题
  • 网页游戏网站下载政务网站建设需求分析
  • 怎么自己做网站卖东西wordpress md 方程组
  • 台州seo网站排名优化石家庄网站建站推广
  • 郫都区网站建设网站制作属于什么行业
  • 网站和主机有什么不同内蒙古建筑培训网
  • 网站建设商业计划书全屋整装家装
  • 青岛如何做网站seowordpress卸载
  • intitle 做网站会员管理系统手机版
  • 创建网站的向导和模板手机网站跳转怎么办
  • 交通运输企业标准建设网站企业网站开发基本流程
  • 如何制作和设计公司网站制作网页前为什么要建立站点
  • 本地广东中山网站建设山东官网建设公司
  • 威海市建设局官方网站深圳网页设计兴田德润优惠吗
  • 做网站用vue还是用jquery常州网站建设系统