将大型Excel / Csv文件拆分为PHP或Javascript上的多个文件

我有excel(file.xls)/ csv(file.csv)文件,其中包含/将包含成千上万的条目,甚至数百万我猜。 是否有可能分裂这一个多个文件? 像file.xls到file1.xls,file2.xls,file3.xls等等。

是否有任何图书馆使用? 这是可能的PHP? 或如何JavaScript? 在哪里可以指定每个文件中包含多less行?

谢谢

将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); 

是的,这是可以做到这一点在PHP和CSV文件。 您基本上遍历大文件,并将每个X行分块,然后将这些行转发到另一个文件。

您可以在这里find有关如何打开大型CSV文件作为迭代器的信息:

  • 回答“如何从php中的csv文件中提取数据”

然后你需要将迭代器分成每个X行部分。 这可以在这里概述:

  • 回答“需要PHP循环的一些build议”

只需输出到多个<ul>...</ul> HTML列表中,即可将其复制到新文件中。 这基本上像以下概述的工作:

  • 回答“我如何在PHP中分割CSV文件?”

但是这次你想使用SplFileObject::fputcsv方法 。 小心你使用最新的稳定的PHP,否则你需要做不同,请参阅fputcsv()

如果原始文件的第一行包含列标题,那么您可能对以下内容感兴趣:

  • 回到“使用列标题为键将CSV处理到数组”

它只是展示了一些扩展/处理包含文件的方法。 你可能不需要在那里做完整的抽象,只要保持第一行就可以了。