ArrayList/MySQL数据批量写入Excel表格

这篇具有很好参考价值的文章主要介绍了ArrayList/MySQL数据批量写入Excel表格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ArrayList/MySQL数据集合写入Excel
1.文章概述:
  写入 Excel 文件通常需要使用一些库或工具,而"EasyExcel"通常是指的阿里巴巴开源的EasyExcel库。这个库可以让我们在Java中简便地进行Excel文件的读写操作。
2.导入配置:
 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.2.0</version>
</dependency>
 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
</dependency>

3.Excel模板类

package com.ccc.bean.tools_enty;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;


@NoArgsConstructor
@Data
public class WriteDataBean  implements Comparable {
   // Excel标头名称
    @ExcelProperty("a")
    private String a;
    @ExcelProperty("b")
    private String b;

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
    }

    @Override
    public int compareTo(Object o) {
//        //可设置排序
//        if (o instance of WriteDataBean){ 
// WechatOfficialAccountBean wechatOfficialAccountBean= (WechatOfficialAccountBean) o;
// return this.getUpload_time().hashCode()-wechatOfficialAccountBean.getUpload_time().hashCode();
// }
throw new ClassCastException("不能转换 WriteDataBean ");
 } 
}

  

4.工具类示例代码:

package com.ccc.tools;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.felephantst.bean.tools_enty.WriteDataBean;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: FileTool
 * @Description TODO 操作文件工具类
 * @Author: 东霖
 * @Date: 2023/9/12 13:19
 * @Version 1.0
 **/
public class FileTool {

    /**
     * 读取指定文件
     *
     * @param filePath
     * @return 返回一个字符串集合
     */
    public static List<String> readFile(String filePath) {
        List<String> stringList = new ArrayList<>();
        try {
            FileReader fr = new FileReader(filePath);
            BufferedReader bf = new BufferedReader(fr);
            String str;
            // 按行读取字符串
            while ((str = bf.readLine()) != null) {
                stringList.add(str);
            }
            bf.close();
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringList;
    }

    /**
     * TODO: 小数据量写出数据到 Excel(2000条左右用这个)
     *
     * @param bean        模板类
     * @param outFilePath 输出路径全称:test.xlsx
     * @param sheetName   excel Sheet 名称
     * @param collect     数据集
     */
    public static void writeMinDataExcel(Class<?> bean, String outFilePath, String sheetName, ArrayList collect) {
        OutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(outFilePath);
            EasyExcel.write(outputStream, bean).sheet(sheetName).doWrite(collect);
            //写出到文件
            outputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * TODO: 大数据量写出数据到 Excel(2000条左右用这个)
     *
     * @param bean        模板类
     * @param outFilePath 输出路径全称:test.xlsx
     * @param sheetName   excel Sheet 名称
     * @param sizeLimitDataList     数据集
     * @param sizeLimit   设置多少条数据为一个Sheet
     */
    public static void writeMaxDataExcel(Class<?> bean, String outFilePath, String sheetName, ArrayList sizeLimitDataList, Integer sizeLimit) {
        // 总Sheet数
        int num = sizeLimitDataList.size() / sizeLimit + (sizeLimitDataList.size() % sizeLimit > 0 ? 1 : 0);
        // 输出流
        OutputStream outputStream = null;
        try {
            // 以字节流的形式输出响应正文
            outputStream = new FileOutputStream(outFilePath);
            try (ExcelWriter excelWriter = EasyExcel.write(outputStream, bean).build()) {
                // 中间list调用写入
                List<?> partList = null;
                WriteSheet writeSheet =null;
                for (int i = 0; i < num; i++) {
                    // 每次写入都要创建WriteSheet, 这里注意必须指定sheetNo, 并且sheetName必须不一样
                    writeSheet = EasyExcel.writerSheet(i, sheetName + (i + 1)).build();
                    // 截取批次长度的list
                    partList = sizeLimitDataList.subList(0, sizeLimit);
                    // 分批业务逻辑处理- 打印替代
                    excelWriter.write(partList, writeSheet);
                    // 去除已经处理的部分 (Arrays.asList()方式生成的数据不能进行此修改操作,会报错)
                    partList.clear();
                }
                // 获取最后一次截取后的剩余列表数据
                if (!sizeLimitDataList.isEmpty()) {
                    // 业务逻辑数据处理
                    excelWriter.write(sizeLimitDataList, writeSheet);
                }
            }
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            } finally {
                if (outputStream != null) {
                    try {
                        outputStream.close();
                    } catch (IOException ex) {
                        throw new RuntimeException(ex);
                    }
                }
            }
        }

        public static void main (String[]args){
        WriteDataBean writeDataBean = new WriteDataBean();
        writeDataBean.setA("a");
        writeDataBean.setB("b");
        WriteDataBean writeDataBean1 = new WriteDataBean();
        writeDataBean1.setA("ad");
        writeDataBean1.setB("bd");
        objects.add(writeDataBean1);
        objects.add(writeDataBean);

        writeMaxDataExcel(WriteDataBean.class, "D://cdc.xlsx", "test", objects, 1);
        writeMinDataExcel(WriteDataBean.class, "D://cddc.xlsx", "test", objects);
    
    }
}

  文章来源地址https://www.toymoban.com/news/detail-707951.html

到了这里,关于ArrayList/MySQL数据批量写入Excel表格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CDH6.3.2 的pyspark读取excel表格数据写入hive中的问题汇总

    需求:内网通过Excel文件将数据同步到外网的CDH服务器中,将CDH中的文件数据写入hive中。 CDH版本为:6.3.2 spark版本为:2.4 python版本:2.7.5 操作系统:CentOS Linux 7 集群方式:yarn-cluster 一、在linux中将excel文件转换成CSV文件,然后上传到hdfs中。 为何要先转csv呢?主要原因是pysp

    2024年02月07日
    浏览(34)
  • POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表

    POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。 所以POI的主要功能是可以用Java操作Microsoft Office的相关文件,但是一般我

    2024年02月10日
    浏览(39)
  • 数学建模 Excel的批量写入与批量导出

    数学建模中编程手们常常会被要求将大量的数据进行批量的预测操作,并写入某个文件中 Excel的批量导出数据,用循环就可以简单实现,例如 同时当我们对上述的每一个文件进行预测操作之后,需要将结果输出在一个.csv或.xlsx文件中,可以这样写: 值得注意的是,result.xlsx需

    2024年02月06日
    浏览(32)
  • MySQL批量导入Excel数据【超详细】

    查看此文章前强烈建议先看这篇文章:Java江湖路 | 专栏目录 今天遇到一个需求,批量更新数据库中全国各地的物流价格,产品经理很贴心的为我做好了数据表格,说是上一个技术也是这么做的,好,压力给到我这边。话不多说,直接上步骤。 1、准备好我们需要导入的excel表

    2024年02月05日
    浏览(35)
  • R语言批量将PDF中表格,转化为excel

    您好!以下是使用R语言将PDF中的表格批量转化为Excel的步骤: 1. 安装必要的包 您需要安装`pdftools`和`tabulizer`包。可以通过以下代码来安装它们: install.packages(\\\"pdftools\\\") install.packages(\\\"tabulizer\\\")   2. 设置工作目录 将包含PDF文件的文件夹设置为R的工作目录。可以使用以下代码来设

    2024年02月11日
    浏览(28)
  • 【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口

    在上一篇博客,【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口_s:103的博客-CSDN博客 我们学习了如何导入表格,现在我们反过来,看看如何导出表格~ 网络资料: View Object(视图对象)是一种在软件开发中常见的设计模式,它用于在用户界面

    2024年02月08日
    浏览(37)
  • arcpy基于excel中表格字段批量给矢量要素添加对应字段

    将Excel表格中的字段批量添加到矢量要素并将对应内容填写到要素属性表是可以使用Arcpy实现的。以下是一个简单代码,假设有一个包含字段和数据的Excel表格以及要进行批量添加的矢量要素图层: import arcpy import xlrd # 设置输入数据路径 excel_file = r\\\"C:dataattributes.xlsx\\\"  # 包含字

    2024年02月10日
    浏览(39)
  • 【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口

    最近由于学校压力,心情不太好,没咋写博客; 但最近做数据库实验的时候,数据是xlsx文件展示的,要求将这些导入数据库,我懒得去下载MySQL WorkBench等等可视化的工具,就想着写个程序来实现这个功能~ 只要访问这个接口,输入xlsx表格文件的路径,就会向程序设置好的数

    2024年02月07日
    浏览(37)
  • word文档批量生成工具(附免费软件)(按Excel表格内容自动替换内容生成文档)

    批量生成word文档是让人无比厌恶但有时又不得不做的事情。比如学校要给拟录取的学生发通知书,就可能需要批量生成一批只有“姓名”、“学院”和“专业”不同,其他内容都相同的word文档以供打印(事实上直接生成pdf是更好的选择,这个以后有心情可以弄一下)。 要实

    2024年02月11日
    浏览(36)
  • 彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

    在整理数据的时候遇到一个问题:假如有很多个excel表,分别存放了一部分数据,现在想要快速把这些表格的数据汇总到一起,如何用R语言快速完成呢?本文分享一个脚本,能够自动完成类似的工作。 假如每个材料(样本)的ID编号是从N001开始依次递增,现在有很多excel表格

    2024年02月03日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包