Php 将Excel工作表保存到CSV很慢

Php 将Excel工作表保存到CSV很慢,php,excel,phpspreadsheet,Php,Excel,Phpspreadsheet,尝试将所有(5页)工作表保存到名为“工作表”的单独csv文件中。 这段代码非常慢,提取5个页面大约需要5分钟,每个页面上只有30行4列 <?php require 'vendor/autoload.php'; $xls = 'test.xls'; echo convertXlsCsv($xls); function convertXlsCsv($xls) :bool { $result = FALSE; // DEFAULT try { $reade

尝试将所有(5页)工作表保存到名为“工作表”的单独csv文件中。 这段代码非常慢,提取5个页面大约需要5分钟,每个页面上只有30行4列

<?php 
require 'vendor/autoload.php';

$xls  = 'test.xls';
echo convertXlsCsv($xls);

function convertXlsCsv($xls)
:bool
{
    $result = FALSE; // DEFAULT
    try {
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
        $reader->setReadDataOnly(true);
        $spreadsheet = $reader->load($xls);
        $sheetCount = $spreadsheet->getSheetCount();
        $loadedSheetNames = $spreadsheet->getSheetNames();
        for ($i = 0; $i < $sheetCount; $i++) {
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
            $writer->setDelimiter(';');
            $writer->setEnclosure('');
            $writer->setLineEnding("\r\n");
            $writer->setSheetIndex($i);
            $writer->setUseBOM(true); //Writing UTF-8 CSV files
            $writer->save($loadedSheetNames[$i].'.csv');
            $result = TRUE;
        }
    } catch (Exception $e){
        echo "Error";
    }
    return $result;  
}#endfunc

我可以确认它对我来说也很慢,每张纸大约30秒。问题似乎是使用了
VLOOKUP
。如果将搜索范围缩小为只搜索填充的单元格而不是整个列,则会获得更快的性能

=VLOOKUP(A18, codes!A1:B250, 2, FALSE)
或者,如果您确保代码工作表按字母顺序排序,则可以使用:

而且它的运行速度也会快得多


请注意,由于某些原因,您无法使用这两个公式中的任何一个进行填充。它们需要手动输入范围:(

你能提供测试文件的链接吗?测试文件我的回答解决了你的问题吗?如果我不接受,那就意味着没有
=LOOKUP(A18, codes!A1:A250, codes!B1:B250)