在PHP或Javascript上将大型Excel/Csv文件拆分为多个文件
我有excel(file.xls)/csv(file.csv)文件,其中包含/将包含数十万条条目,我想可能是数百万条。是否可以将此文件拆分为多个文件?像file.xls到file1.xls、file2.xls、file3.xls等等 有图书馆可供使用吗?这在PHP上可能吗?或者javascript呢? 在何处可以指定每个文件中包含多少行在PHP或Javascript上将大型Excel/Csv文件拆分为多个文件,php,excel,csv,Php,Excel,Csv,我有excel(file.xls)/csv(file.csv)文件,其中包含/将包含数十万条条目,我想可能是数百万条。是否可以将此文件拆分为多个文件?像file.xls到file1.xls、file2.xls、file3.xls等等 有图书馆可供使用吗?这在PHP上可能吗?或者javascript呢? 在何处可以指定每个文件中包含多少行 谢谢是的,在PHP和CSV文件中可以做到这一点。您基本上是在大文件上迭代,并将每个X行分块,将这些行转发到另一个文件 您可以在以下答案中找到如何以迭代器形式打开
谢谢是的,在PHP和CSV文件中可以做到这一点。您基本上是在大文件上迭代,并将每个X行分块,将这些行转发到另一个文件 您可以在以下答案中找到如何以迭代器形式打开大型CSV文件的信息:
..
HTML列表中。其基本工作原理如中所述:
它只是显示了一些扩展/处理输入文件的方法。您可能不需要在那里完成完整的抽象,只要保留第一行就可以了。将一个CSV文件拆分为多个CSV文件的快速而肮脏的方法
$inputFile = 'input.csv';
$outputFile = 'output';
$splitSize = 10000;
$in = fopen($inputFile, 'r');
$rowCount = 0;
$fileCount = 1;
while (!feof($in)) {
if (($rowCount % $splitSize) == 0) {
if ($rowCount > 0) {
fclose($out);
}
$out = fopen($outputFile . $fileCount++ . '.csv', 'w');
}
$data = fgetcsv($in);
if ($data)
fputcsv($out, $data);
$rowCount++;
}
fclose($out);
我认为您也可以使用“按文件大小拆分”:
你说的是xls(BIFF)文件吗?或者关于csv文件?还是扩展名为.xls的csv文件?Excel xls文件和CSV文件两个非常不同。。。而且xls(BIFF)文件的行数限制为65535行,因此,除非您的数据被拆分到多个工作表中,否则不可能同时拥有数百万个条目。可能是一个可以在csv或excel上使用的交叉兼容代码。这是可能的吗?这是可能的,但在xls中谈论如此大的数据量时,可能会出现内存问题和性能降低。我的PHPExcel库可以做到这一点,但我建议坚持使用纯CSV,它可以很容易地一次处理一行PHPExcel,所以您编写了该库。杰出的目前,测试的CSV最大条目数为100000。如果你介绍怎么做的话,也许我会躲在那里?thanksMark-这很好,但是考虑到OP关于拆分大文件的问题,编写的示例将创建500k个文件,每个文件包含2行csv数据。我相信这对他来说是不合适的。我建议将splitSize提高到更合理的水平,比如至少10k。
$part = 1;
$maxSize = 50;//50 Mb
$fopen = fopen('filename.csv','r') or die ('ERROR');
while (($line = fgetcsv($fopen, 10000, ";")) !== FALSE) {
$ftowrite = fopen("Part_$part.csv",'a');
fputcsv($ftowrite,$line);
clearstatcache();
$size = filesize ( "review_p$part.csv" ) / 1000000;
if ($size > $maxSize) {
fclose($ftowrite);
$part++;
}
}