日常学习(2019.03.22)——记使用POI多线程写Excel数据的过程和收获,存在部分疑问

周五的时候,同事突然问我有没有做过多线程写Excel的数据,看我一时没理解,同事说就是多线程往workbook中写数据。说起来Excel的操作之前做的很多了,但是重来没考虑过这么做,不过既然提起了,而且网上也有相关内容,何不自己尝试一下?于是自己便尝试用自己微薄的技术水平来实现下这个逻辑。

首先考虑需要哪些东西:

首先我们需要一个生成和处理数据的类:WriteDataUtils;

package dai.learn.write.utils;

import java.util.ArrayList;
import java.util.List;

/**
 * 写数据的工具
 * @author daify
 * @create 2019-03-22 11:23
 **/
public class WriteDataUtils {

    /**
     * 获得表格头
     * @return
     */
    public static List<String> getTitle() {
        List<String> titles = new ArrayList <String>();
        titles.add("序号");
        titles.add("名称");
        titles.add("占位符");
        return titles;
    }

    /**
     * 获得假数据
     * @param max
     * @return
     */
    public static List<List<String>> getValues(int max) {
        List<List<String>> rest = new ArrayList <List <String>>();
        for (int i = 0; i < max; i++) {
            List<String> item = new ArrayList <String>();
            item.add(String.valueOf(i));
            item.add("名称" + String.valueOf(i));
            item.add("占位符" + String.valueOf(i));
            rest.add(item);
        }
        return rest;
    }

    /**
     * 将数据进行分组
     * @param data
     * @param groupNum
     * @return
     */
    public static List<List <List <String>>> groupData(List<List<String>> data,
                                       Integer groupNum) {
        int all = data.size();
        int other = all%groupNum;
        int groupItemNum = all/groupNum;
        List<List <List <String>>> runList = new ArrayList <List <List <String>>>();
        while (data == null || data.size() > 0) {
            if (data.size() < other + groupItemNum) {
                List <List <String>> lists = data.subList(0, data.size());
                List <List <String>> item = new ArrayList <List <String>>();
                item.addAll(lists);
                runList.add(item);
                data.removeAll(item);
            } else {
                List 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大·风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值