ApachePOI并行处理的支持
创始人
2024-09-06 08:30:30
0

Apache POI提供了并行处理的支持,可以在处理大型Excel文件时提高效率。下面是一个示例代码,演示如何在Apache POI中并行读取Excel文件:

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.*;

public class ExcelReader {

    public static void main(String[] args) {
        String fileName = "example.xlsx";

        try (FileInputStream inputStream = new FileInputStream(fileName);
             Workbook workbook = new XSSFWorkbook(inputStream)) {

            Sheet sheet = workbook.getSheetAt(0);
            int numThreads = Runtime.getRuntime().availableProcessors();
            ExecutorService executorService = Executors.newFixedThreadPool(numThreads);

            List>> futures = new ArrayList<>();

            for (int i = 0; i < sheet.getLastRowNum(); i++) {
                final Row row = sheet.getRow(i);

                Callable> callable = () -> {
                    List values = new ArrayList<>();

                    for (int j = 0; j < row.getLastCellNum(); j++) {
                        Cell cell = row.getCell(j);
                        values.add(cell.getStringCellValue());
                    }

                    return values;
                };

                Future> future = executorService.submit(callable);
                futures.add(future);
            }

            List> results = new ArrayList<>();
            for (Future> future : futures) {
                List result = future.get();
                results.add(result);
            }

            for (List result : results) {
                System.out.println(result);
            }

            executorService.shutdown();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用ExecutorService和Callable来并行读取Excel文件中的每一行。为了让程序在多核CPU上运行效率更高,我们将线程池大小设置为当前系统可用的CPU核心数。

我们在for循环中创建一个Callable,

相关内容

热门资讯

透视脚本!wpk系统是否存在作... 透视脚本!wpk系统是否存在作弊行为,wpk有作弊吗,解密教程(有挂方法)该软件可以轻松地帮助玩家将...
透视数据!hhpoker作弊码... 透视数据!hhpoker作弊码怎么用,hhpoker是正规的吗,新2025教程(有挂辅助);1、构建...
透视攻略!wpk透视是真的假的... 透视攻略!wpk透视是真的假的,wpk俱乐部是真的吗,我来教教你(有挂揭秘)1、wpk透视是真的假的...
透视好友!hhpoker到底可... 透视好友!hhpoker到底可以作弊吗,hhpkoer辅助器视频,2025版教程(有挂插件)1、很好...
透视脚本!wpk系统是否存在作... 透视脚本!wpk系统是否存在作弊行为,wpk控制牌是真的吗,力荐教程(有挂详情)1、任何wpk系统是...
透视肯定!hhpkoer辅助挂... 透视肯定!hhpkoer辅助挂是真的吗,hh poker软件,必赢教程(有挂细节)1、每一步都需要思...
透视能赢!如何判断wpk辅助软... 透视能赢!如何判断wpk辅助软件的真假,wpk真吗,详细教程(有挂解密)1、如何判断wpk辅助软件的...
透视好牌!德州局HHpoker... 透视好牌!德州局HHpoker透视脚本,hhpoker有没有辅助,必赢方法(有挂攻略)1、透视好牌!...
透视辅助!wpk透视辅助方法,... 透视辅助!wpk透视辅助方法,wpk作弊,透明挂教程(有挂解密);1、进入到wpk透视辅助方法黑科技...
透视软件!hhpoker有没有... 透视软件!hhpoker有没有外挂,德州透视hhpoker,揭秘教程(有挂插件);1、hhpoker...