我有excel(file.xls)/ csv(file.csv)文件包含/将包含数十万个条目,甚至数百万我猜.是否可以将此分割为多个文件?像file.xls到file1.xls,file2.xls,file3.xls等.
有没有可以使用的库?这可能在PHP上吗?或者javascript怎么样?在哪里我可以指定每个文件中包含多少行?
谢谢
Mar*_*ker 22
将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);
Run Code Online (Sandbox Code Playgroud)
是的,可以用 PHP 和 CSV 文件来做到这一点。您基本上迭代大文件并对每个 X 行进行分块,将这些行转发到另一个文件。
您可以在此答案中找到如何将大型 CSV 文件作为迭代器打开的信息:
然后您需要将迭代器的每个 X 行部分分块。这可以按照这里的概述来完成:
只需复制到<ul>...</ul>新文件中,而不是输出到多个 HTML 列表中。这基本上就像以下概述的那样工作:
不过这次你要使用SplFileObject::fputcsv方法。请注意为此使用最新的稳定 PHP,否则您需要做不同的事情,请参阅fputcsv()。
如果原始文件的第一行包含列标题,您可能会对以下内容感兴趣:
它只是显示了一些扩展/处理传入文件的方法。您可能不需要在那里完成完整的抽象,只需保留第一行就可以了。