尝试将所有(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
如果我使用Xlsx
的代码不起作用,则说Calculation error
那么如何快速将所有页面保存到csv?
答案 0 :(得分:1)
我也可以确定它对我来说很慢,每张纸大约30秒。问题似乎在于使用VLOOKUP
。如果缩小搜索范围以仅搜索填充的单元格而不是整个列,则性能会提高很多。
=VLOOKUP(A18, codes!A1:B250, 2, FALSE)
或者,如果您确保代码工作表按字母顺序排序,则可以使用LOOKUP
function:
=LOOKUP(A18, codes!A1:A250, codes!B1:B250)
它也将更快地执行。
请注意,由于某些原因,您无法填写这两个公式。他们需要手动输入范围。 :(