Heim  >  Artikel  >  Backend-Entwicklung  >  So lesen Sie Daten aus großen Excel-Dateien mit PHP

So lesen Sie Daten aus großen Excel-Dateien mit PHP

不言
不言Original
2018-07-11 16:21:375793Durchsuche

Dieser Artikel stellt hauptsächlich vor, wie man große Excel-Dateidaten mit PHP liest. Er hat einen gewissen Referenzwert. Jetzt können Freunde in Not darauf verweisen.

Erklärung

Heute kam ein alter Klassenkamerad zu mir und sagte, dass das Logistikgeschäft seines Unternehmens jetzt über Excel abgewickelt wird. Aufgrund der großen Datenmenge auf monatlicher Basis hat ein Excel fast eine Million Daten. und die Dateien sind fast 100 MB groß, das Öffnen und Durchsuchen ist ziemlich langsam.

Stellen Sie sich das Szenario vor: Zum Importieren von Daten sind möglicherweise große Mengen an Excel-Daten vorhanden. Einige häufig verwendete Methoden wie PHPExcel werden häufig verwendet haben Zeit- und Speicherbeschränkungen

Unten verwenden wir SpreadsheetReader, eine Klassenbibliothek, die Stream-Verarbeitung verwendet, um große Excel-Dateien zu lesen

Schreibprozess

Erklärung

Die wichtigsten Details sind im Code kommentiert

Code
<?php
/**
 * Created by PhpStorm.
 * User: qkl
 * Date: 2018/7/11
 * Time: 15:14
 */

set_time_limit(0);   // 设置脚本最大执行时间 为0 永不过期
//ini_set(&#39;memory_limit&#39;,&#39;200M&#39;);    // 临时设置最大内存占用

function convert($size)
{
    $unit = array(&#39;b&#39;, &#39;kb&#39;, &#39;mb&#39;, &#39;gb&#39;, &#39;tb&#39;, &#39;pb&#39;);
    return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . &#39; &#39; . $unit[$i];
}

require &#39;../vendor/autoload.php&#39;;

$start = memory_get_usage();
echo convert($start) . PHP_EOL;
//$inputFileName = &#39;./11111111.xlsx&#39;;
$inputFileName = &#39;./example1.xlsx&#39;;

// If you need to parse XLS files, include php-excel-reader

$startTime = microtime(true);

$Reader = new SpreadsheetReader($inputFileName);

//获取当前文件所有的工作表
$sheets = $Reader->Sheets();
if (!$sheets) {
    die("没有工作表");
}

//改变当前处理的工作表
$Reader->ChangeSheet(0);

//打印当前所在工作表的当前所在行数据
var_dump($Reader->current());

//因为reader类集成了Iter所以可以用迭代方式处理
//这里提醒 如果文件超大,这边的处理速度会过慢,不过不会引发内存性能问题
//$i = 0;
//foreach ($Reader as $Row)
//{
//    if ($i>=3) {
//        break;
//    }
//
//    echo $i . PHP_EOL;
//    print_r($Row);
//
//    $i++;
//}

$endTime = microtime(true);
$memoryUse = memory_get_usage();

echo "内存占用:" . convert($memoryUse) . "; 用时:" . ($endTime - $startTime) . PHP_EOL;

Ergebnisse

Testbeschreibung

Die oben gelesene Datei example1.xlsx ist etwa 100 MB groß. und das Lesen und Schreiben ist zu langsam. Der Test ermöglichte nur das Lesen. Die aktuellen Zeilendaten des aktuellen Standardarbeitsblatts wurden aufgrund vertraulicher Daten blockiert Oben finden Sie den gesamten Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller nützlich sein wird. Wenn Sie Hilfe benötigen, schauen Sie sich bitte die chinesische PHP-Website an, um weitere verwandte Inhalte zu erhalten!

Verwandte Empfehlungen:

So verwenden Sie PHP, um einen einfachen Interpreter zu schreiben

So verwenden Sie MixPHP, um API-Schnittstellen zu entwickeln

Das obige ist der detaillierte Inhalt vonSo lesen Sie Daten aus großen Excel-Dateien mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn